)]}'
{"specs/keystone/rocky/hierarchical-unified-limits.rst":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f2db9172e2916c01df9194d219b861a2ce4e5da4","unresolved":false,"context_lines":[{"line_number":165,"context_line":"  equal to the limit for that specific project"},{"line_number":166,"context_line":"* Allocating 4 ``cores`` to project ``B`` succeeds because the total usage for"},{"line_number":167,"context_line":"  ``B`` is less than the default of 10 and the total usage of the tree is less"},{"line_number":168,"context_line":"  than or equal to the limit of ``A``."},{"line_number":169,"context_line":"* Attempting to allocate 6 ``cores`` to B succeeds but it shouldn\u0027t. It"},{"line_number":170,"context_line":"  succeeds because B is still under it\u0027s default limit of 10, but it shouldn\u0027t"},{"line_number":171,"context_line":"  because the total usage under ``A`` has exceeded 20. This is problematic"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_ba2d9ba9","line":168,"updated":"2018-05-01 15:03:26.000000000","message":"Nit: allocating 2 additional cores, making a total usage of 4 cores, will succeed.\n\nI got a bit confused with 6+1+15, rather than 4+1+15.\n\nIt might have just been my miss-read.","commit_id":"a16bca271284a4db1fe21bdfcf04b23e6ce44622"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f2db9172e2916c01df9194d219b861a2ce4e5da4","unresolved":false,"context_lines":[{"line_number":172,"context_line":"  because it would require the service responsible for ``cores`` to pass in all"},{"line_number":173,"context_line":"  resources and which project owns them in order for oslo.limit to make a"},{"line_number":174,"context_line":"  decision, which defeats the purpose of not having the service understand the"},{"line_number":175,"context_line":"  hierarchy."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Given the issue noted in the last bullet point above. Let\u0027s rework the"},{"line_number":178,"context_line":"example by being more strict about defaults and what they mean. Consider a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_450b4423","line":175,"updated":"2018-05-01 15:03:26.000000000","message":"So the service only needs to know which checks need to be done against which counts.\n\nIn the case of increasing B, you must check B against its limit (10), and also sum of A, B, C against the limit of 20.\n\nThe service doesn\u0027t need to know the detail of the hierarchy, only the counts that are required to enforce.\n\nNow in a two level hierarchy, that is largely the same information... but meh.\n\nI should keep reading....","commit_id":"a16bca271284a4db1fe21bdfcf04b23e6ce44622"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"15b1a068f9113362830e900165eaa86b408433e4","unresolved":false,"context_lines":[{"line_number":172,"context_line":"  because it would require the service responsible for ``cores`` to pass in all"},{"line_number":173,"context_line":"  resources and which project owns them in order for oslo.limit to make a"},{"line_number":174,"context_line":"  decision, which defeats the purpose of not having the service understand the"},{"line_number":175,"context_line":"  hierarchy."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Given the issue noted in the last bullet point above. Let\u0027s rework the"},{"line_number":178,"context_line":"example by being more strict about defaults and what they mean. Consider a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"9f6a8fd7_898e4e25","line":175,"in_reply_to":"9f6a8fd7_450b4423","updated":"2018-05-01 21:05:46.000000000","message":"The next patch set is a more complete representation of what we talked about today, and is probably more clear.","commit_id":"a16bca271284a4db1fe21bdfcf04b23e6ce44622"}],"specs/keystone/rocky/strict-two-level-enforcement-model.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7697d87f086b3d516303981891c9d8587c7bc87c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Enforcement Diagrams"},{"line_number":75,"context_line":"--------------------"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The following diagrams are meant as visual aids to illustrate the above"},{"line_number":78,"context_line":"behaviors. Assume the resource in question is ``cores``, and the default"},{"line_number":79,"context_line":"registered limit for ``cores`` is 10. The labels in the diagrams below use"},{"line_number":80,"context_line":"shorthand notation for `limit` and `usage` as `l` and `u`, respectively."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_3fa41008","line":78,"range":{"start_line":77,"start_character":0,"end_line":78,"end_character":9},"updated":"2018-05-01 22:55:57.000000000","message":"This is *way* too wordy.\n\nThe following diagrams illustrate the above behaviors.","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":74,"context_line":"Enforcement Diagrams"},{"line_number":75,"context_line":"--------------------"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"The following diagrams are meant as visual aids to illustrate the above"},{"line_number":78,"context_line":"behaviors. Assume the resource in question is ``cores``, and the default"},{"line_number":79,"context_line":"registered limit for ``cores`` is 10. The labels in the diagrams below use"},{"line_number":80,"context_line":"shorthand notation for `limit` and `usage` as `l` and `u`, respectively."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_41fd5838","line":78,"range":{"start_line":77,"start_character":0,"end_line":78,"end_character":9},"in_reply_to":"9f6a8fd7_3fa41008","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7697d87f086b3d516303981891c9d8587c7bc87c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"registered limit for ``cores`` is 10. The labels in the diagrams below use"},{"line_number":80,"context_line":"shorthand notation for `limit` and `usage` as `l` and `u`, respectively."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Oversubscribing a parent\u0027s limit"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":".. blockdiag::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_9f9d1cbd","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":32},"updated":"2018-05-01 22:55:57.000000000","message":"This can be removed. I was going to turn this into a title, but I don\u0027t think it necessary. Or I haven\u0027t figured out how I want to break the examples apart yet.","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":79,"context_line":"registered limit for ``cores`` is 10. The labels in the diagrams below use"},{"line_number":80,"context_line":"shorthand notation for `limit` and `usage` as `l` and `u`, respectively."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"Oversubscribing a parent\u0027s limit"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":".. blockdiag::"},{"line_number":85,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_61f89c48","line":82,"range":{"start_line":82,"start_character":0,"end_line":82,"end_character":32},"in_reply_to":"9f6a8fd7_9f9d1cbd","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7697d87f086b3d516303981891c9d8587c7bc87c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"   }"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Despite the usage of the tree being equal to the limit, we can still add"},{"line_number":132,"context_line":"children to the tree. We can ``CREATE PROJECT D`` which is a child of project"},{"line_number":133,"context_line":"``A``."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. blockdiag::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_9f867c65","line":132,"range":{"start_line":132,"start_character":21,"end_line":132,"end_character":77},"updated":"2018-05-01 22:55:57.000000000","message":"This is redundant with the previous sentence and can be removed.","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":129,"context_line":"   }"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Despite the usage of the tree being equal to the limit, we can still add"},{"line_number":132,"context_line":"children to the tree. We can ``CREATE PROJECT D`` which is a child of project"},{"line_number":133,"context_line":"``A``."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. blockdiag::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_21986419","line":132,"range":{"start_line":132,"start_character":21,"end_line":132,"end_character":77},"in_reply_to":"9f6a8fd7_9f867c65","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7697d87f086b3d516303981891c9d8587c7bc87c","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Despite the usage of the tree being equal to the limit, we can still add"},{"line_number":132,"context_line":"children to the tree. We can ``CREATE PROJECT D`` which is a child of project"},{"line_number":133,"context_line":"``A``."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. blockdiag::"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_bfb7c03a","line":133,"range":{"start_line":133,"start_character":3,"end_line":133,"end_character":6},"updated":"2018-05-01 22:55:57.000000000","message":"s/./:/","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"Despite the usage of the tree being equal to the limit, we can still add"},{"line_number":132,"context_line":"children to the tree. We can ``CREATE PROJECT D`` which is a child of project"},{"line_number":133,"context_line":"``A``."},{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. blockdiag::"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_a18314a9","line":133,"range":{"start_line":133,"start_character":3,"end_line":133,"end_character":6},"in_reply_to":"9f6a8fd7_bfb7c03a","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7697d87f086b3d516303981891c9d8587c7bc87c","unresolved":false,"context_lines":[{"line_number":147,"context_line":"      D [label\u003d\"D (u\u003d0)\", textcolor \u003d \"#00af00\"];"},{"line_number":148,"context_line":"   }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Even though the project can be created, the current usage of the tree prevents"},{"line_number":151,"context_line":"``D`` from claiming any ``cores``."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. blockdiag::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_bf902097","line":150,"range":{"start_line":150,"start_character":52,"end_line":150,"end_character":70},"updated":"2018-05-01 22:55:57.000000000","message":"usage of cores across the tree*","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":147,"context_line":"      D [label\u003d\"D (u\u003d0)\", textcolor \u003d \"#00af00\"];"},{"line_number":148,"context_line":"   }"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"Even though the project can be created, the current usage of the tree prevents"},{"line_number":151,"context_line":"``D`` from claiming any ``cores``."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":".. blockdiag::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_21c144e5","line":150,"range":{"start_line":150,"start_character":52,"end_line":150,"end_character":70},"in_reply_to":"9f6a8fd7_bf902097","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7697d87f086b3d516303981891c9d8587c7bc87c","unresolved":false,"context_lines":[{"line_number":230,"context_line":"   }"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"While ``C`` is still under its default allocation of 10 ``cores``, it won\u0027t be"},{"line_number":233,"context_line":"able to claim any more cores because the total usage of the tree is equal to"},{"line_number":234,"context_line":"the limit of ``A``, thus preventing ``C`` from reclaiming the cores it had:"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. blockdiag::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_dfe07429","line":233,"range":{"start_line":233,"start_character":23,"end_line":233,"end_character":28},"updated":"2018-05-01 22:55:57.000000000","message":"``cores``","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":230,"context_line":"   }"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"While ``C`` is still under its default allocation of 10 ``cores``, it won\u0027t be"},{"line_number":233,"context_line":"able to claim any more cores because the total usage of the tree is equal to"},{"line_number":234,"context_line":"the limit of ``A``, thus preventing ``C`` from reclaiming the cores it had:"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. blockdiag::"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_a1ac7435","line":233,"range":{"start_line":233,"start_character":23,"end_line":233,"end_character":28},"in_reply_to":"9f6a8fd7_dfe07429","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"7697d87f086b3d516303981891c9d8587c7bc87c","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"While ``C`` is still under its default allocation of 10 ``cores``, it won\u0027t be"},{"line_number":233,"context_line":"able to claim any more cores because the total usage of the tree is equal to"},{"line_number":234,"context_line":"the limit of ``A``, thus preventing ``C`` from reclaiming the cores it had:"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. blockdiag::"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_7fd12857","line":234,"range":{"start_line":234,"start_character":62,"end_line":234,"end_character":67},"updated":"2018-05-01 22:55:57.000000000","message":"``cores``","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":231,"context_line":""},{"line_number":232,"context_line":"While ``C`` is still under its default allocation of 10 ``cores``, it won\u0027t be"},{"line_number":233,"context_line":"able to claim any more cores because the total usage of the tree is equal to"},{"line_number":234,"context_line":"the limit of ``A``, thus preventing ``C`` from reclaiming the cores it had:"},{"line_number":235,"context_line":""},{"line_number":236,"context_line":".. blockdiag::"},{"line_number":237,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_41ab181c","line":234,"range":{"start_line":234,"start_character":62,"end_line":234,"end_character":67},"in_reply_to":"9f6a8fd7_7fd12857","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3964922616a11dde6647cf5af8767a21534252ba","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"The aim is to build a minimal limit hierarchy that can be used as a base"},{"line_number":311,"context_line":"to explore more complicated use cases. The problem is based around this case:"},{"line_number":312,"context_line":"http://lists.openstack.org/pipermail/openstack-dev/2017-February/111999.html"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"Limits are applied at a top level to a small set of groups. The top level admin"},{"line_number":315,"context_line":"takes care to ensure the limits set do not exceed the total capacity of their"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_0e5f9272","line":312,"range":{"start_line":312,"start_character":0,"end_line":312,"end_character":76},"updated":"2018-05-02 18:34:58.000000000","message":"This could be mentioned before the behavioral section so that people can read the requirements before the start wondering how we came up with this design.","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":309,"context_line":""},{"line_number":310,"context_line":"The aim is to build a minimal limit hierarchy that can be used as a base"},{"line_number":311,"context_line":"to explore more complicated use cases. The problem is based around this case:"},{"line_number":312,"context_line":"http://lists.openstack.org/pipermail/openstack-dev/2017-February/111999.html"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"Limits are applied at a top level to a small set of groups. The top level admin"},{"line_number":315,"context_line":"takes care to ensure the limits set do not exceed the total capacity of their"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_fc276fb5","line":312,"range":{"start_line":312,"start_character":0,"end_line":312,"end_character":76},"in_reply_to":"9f6a8fd7_0e5f9272","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3964922616a11dde6647cf5af8767a21534252ba","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  independent of each other."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"Implementation structure"},{"line_number":374,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"Basically, we should use driver plugin mechanism to support each kind of limit"},{"line_number":377,"context_line":"model."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_6e596e58","line":374,"updated":"2018-05-02 18:34:58.000000000","message":"I pulled these details out into their own bug: \n\nhttps://bugs.launchpad.net/keystone/+bug/1768572","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"b72f57f94211575ea9a83e22f5256064c8153f07","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  independent of each other."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"Implementation structure"},{"line_number":374,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"Basically, we should use driver plugin mechanism to support each kind of limit"},{"line_number":377,"context_line":"model."}],"source_content_type":"text/x-rst","patch_set":2,"id":"9f6a8fd7_1c2b4382","line":374,"in_reply_to":"9f6a8fd7_6e596e58","updated":"2018-05-02 19:49:07.000000000","message":"Done","commit_id":"801de3993d61299cffa27f435d87dd01a4489621"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"401097c26f1655180061da5b0b4746e57b4503a5","unresolved":false,"context_lines":[{"line_number":81,"context_line":"--------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The following diagrams illustrate the above behaviors. Assume the resource in"},{"line_number":84,"context_line":"question is ``cores``, and the default registered limit for ``cores`` is 10."},{"line_number":85,"context_line":"The labels in the diagrams below use shorthand notation for `limit` and `usage`"},{"line_number":86,"context_line":"as `l` and `u`, respectively."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_3eb548ef","line":84,"range":{"start_line":84,"start_character":27,"end_line":84,"end_character":75},"updated":"2018-05-03 09:32:51.000000000","message":"For the case that the parent\u0027s limit is less than the registered limit, the default value of child\u0027s limit should not be the registered limit, it should be the parent\u0027s. For example: A is the parent, its limit is 5, but the registered limit is 10. B is A\u0027s child. For this case, B\u0027s default limit should be 5, not 10.","commit_id":"2542995a69e6e46c6728dadd19b658f28f5eb723"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e0cfefd2d8e4aa2e364938e62fba22b7a6cefd78","unresolved":false,"context_lines":[{"line_number":81,"context_line":"--------------------"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"The following diagrams illustrate the above behaviors. Assume the resource in"},{"line_number":84,"context_line":"question is ``cores``, and the default registered limit for ``cores`` is 10."},{"line_number":85,"context_line":"The labels in the diagrams below use shorthand notation for `limit` and `usage`"},{"line_number":86,"context_line":"as `l` and `u`, respectively."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_8cb6a9d9","line":84,"range":{"start_line":84,"start_character":27,"end_line":84,"end_character":75},"in_reply_to":"5f7c97a3_3eb548ef","updated":"2018-05-03 19:07:17.000000000","message":"I agree. I can explicitly add an example for that.","commit_id":"2542995a69e6e46c6728dadd19b658f28f5eb723"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"401097c26f1655180061da5b0b4746e57b4503a5","unresolved":false,"context_lines":[{"line_number":169,"context_line":"   }"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Creating a grandchild of project ``A`` is forbidden because it violates the"},{"line_number":172,"context_line":"two-level hierarchy constraint."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":".. blockdiag::"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_7e0420c7","line":172,"updated":"2018-05-03 09:32:51.000000000","message":"does it means that if strict-two-level model is used in a Keystone deployment, the max tree depth for all hierarchy projects will be limited to 2 as well? even though the default value of \"max_project_tree_depth\" is 5.","commit_id":"2542995a69e6e46c6728dadd19b658f28f5eb723"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e0cfefd2d8e4aa2e364938e62fba22b7a6cefd78","unresolved":false,"context_lines":[{"line_number":169,"context_line":"   }"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"Creating a grandchild of project ``A`` is forbidden because it violates the"},{"line_number":172,"context_line":"two-level hierarchy constraint."},{"line_number":173,"context_line":""},{"line_number":174,"context_line":".. blockdiag::"},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_cc0a6189","line":172,"in_reply_to":"5f7c97a3_7e0420c7","updated":"2018-05-03 19:07:17.000000000","message":"Yeah - at least that\u0027s how it made sense to me when I wrote this up.\n\nI\u0027m not quite sure how we let certain projects have a depth of more than two and expect to use the model consistently across all projects in the deployment.\n\nThe unfortunate bit is that it forces operators to restructure their projects into a two-level hierarchy in order to use this model. The alternative would be to use the flat enforcement model and control everything manually, which would be tedious, but they could simulate whatever hierarchical enforcement use-case they want.","commit_id":"2542995a69e6e46c6728dadd19b658f28f5eb723"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"401097c26f1655180061da5b0b4746e57b4503a5","unresolved":false,"context_lines":[{"line_number":355,"context_line":"           raise limit.UsageExceededLimitException()"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"In the above code example, the service provides ``oslo.limit`` with four"},{"line_number":358,"context_line":"arguments. The first is a string that should match a registered limit. The"},{"line_number":359,"context_line":"second is the amount of resources the request is for, represented by an"},{"line_number":360,"context_line":"integer. The third is the project ID to track the usage against. The example"},{"line_number":361,"context_line":"assumes the ``context`` variable is an instance of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_9e933c50","line":358,"range":{"start_line":358,"start_character":37,"end_line":358,"end_character":69},"updated":"2018-05-03 09:32:51.000000000","message":"should match a registered limit\u0027s resource_name","commit_id":"2542995a69e6e46c6728dadd19b658f28f5eb723"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e0cfefd2d8e4aa2e364938e62fba22b7a6cefd78","unresolved":false,"context_lines":[{"line_number":355,"context_line":"           raise limit.UsageExceededLimitException()"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"In the above code example, the service provides ``oslo.limit`` with four"},{"line_number":358,"context_line":"arguments. The first is a string that should match a registered limit. The"},{"line_number":359,"context_line":"second is the amount of resources the request is for, represented by an"},{"line_number":360,"context_line":"integer. The third is the project ID to track the usage against. The example"},{"line_number":361,"context_line":"assumes the ``context`` variable is an instance of"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5f7c97a3_8c04697d","line":358,"range":{"start_line":358,"start_character":37,"end_line":358,"end_character":69},"in_reply_to":"5f7c97a3_9e933c50","updated":"2018-05-03 19:07:17.000000000","message":"Done","commit_id":"2542995a69e6e46c6728dadd19b658f28f5eb723"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"da13ebf8c0093cd3bab76041f648cfbee604b439","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                    },"},{"line_number":483,"context_line":"                    {"},{"line_number":484,"context_line":"                        \"id\": \"f8b7f4da96854c4cafe3d985acc5110f\","},{"line_number":485,"context_line":"                        \"project_id\": \"ca7e4b4cd7b849febb34f6cc137089d0\","},{"line_number":486,"context_line":"                        \"region_id\": null,"},{"line_number":487,"context_line":"                        \"resource_limit\": 2560,"},{"line_number":488,"context_line":"                        \"resource_name\": \"ram_mb\","}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_33a35602","line":485,"range":{"start_line":485,"start_character":25,"end_line":485,"end_character":73},"updated":"2018-05-16 09:05:11.000000000","message":"So we only can count quota for a project. Nova also supports user quota.  Is there any plan to support user quota?","commit_id":"85b41e149f176510646bbc1ef9af2f4a8a8013e3"},{"author":{"_account_id":15054,"name":"wangxiyuan","email":"wangxiyuan1007@gmail.com","username":"wangxiyuan"},"change_message_id":"7e51e21f01f48d6f38c17e9a53957b856a63138b","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                    },"},{"line_number":483,"context_line":"                    {"},{"line_number":484,"context_line":"                        \"id\": \"f8b7f4da96854c4cafe3d985acc5110f\","},{"line_number":485,"context_line":"                        \"project_id\": \"ca7e4b4cd7b849febb34f6cc137089d0\","},{"line_number":486,"context_line":"                        \"region_id\": null,"},{"line_number":487,"context_line":"                        \"resource_limit\": 2560,"},{"line_number":488,"context_line":"                        \"resource_name\": \"ram_mb\","}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_d3a542a0","line":485,"range":{"start_line":485,"start_character":25,"end_line":485,"end_character":73},"in_reply_to":"5f7c97a3_33a35602","updated":"2018-05-16 09:17:11.000000000","message":"It\u0027s a special case for Nova, but of cause we need consider supporting it. It need another spec to deal with and I\u0027m afraid we don\u0027t have enough power to land it in Rocky.","commit_id":"85b41e149f176510646bbc1ef9af2f4a8a8013e3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"679875d8d9f7007b6eb83b995f958863d1ef4266","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                    },"},{"line_number":483,"context_line":"                    {"},{"line_number":484,"context_line":"                        \"id\": \"f8b7f4da96854c4cafe3d985acc5110f\","},{"line_number":485,"context_line":"                        \"project_id\": \"ca7e4b4cd7b849febb34f6cc137089d0\","},{"line_number":486,"context_line":"                        \"region_id\": null,"},{"line_number":487,"context_line":"                        \"resource_limit\": 2560,"},{"line_number":488,"context_line":"                        \"resource_name\": \"ram_mb\","}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_eb8abebc","line":485,"range":{"start_line":485,"start_character":25,"end_line":485,"end_character":73},"in_reply_to":"5f7c97a3_d3a542a0","updated":"2018-05-16 13:56:47.000000000","message":"++ we\u0027ve talked about it but we still need to work out some of the details. I think a lot of the same arguments for project limits apply to users, since they live in keystone or get proxied to OpenStack terms from keystone.\n\nThis might make a good topic for the next PTG, once we start incorporating the project limit work into other services.","commit_id":"85b41e149f176510646bbc1ef9af2f4a8a8013e3"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"8de009efee6a190996e8e01f00bbbda62a861e09","unresolved":false,"context_lines":[{"line_number":482,"context_line":"                    },"},{"line_number":483,"context_line":"                    {"},{"line_number":484,"context_line":"                        \"id\": \"f8b7f4da96854c4cafe3d985acc5110f\","},{"line_number":485,"context_line":"                        \"project_id\": \"ca7e4b4cd7b849febb34f6cc137089d0\","},{"line_number":486,"context_line":"                        \"region_id\": null,"},{"line_number":487,"context_line":"                        \"resource_limit\": 2560,"},{"line_number":488,"context_line":"                        \"resource_name\": \"ram_mb\","}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_3ccd5eb6","line":485,"range":{"start_line":485,"start_character":25,"end_line":485,"end_character":73},"in_reply_to":"5f7c97a3_eb8abebc","updated":"2018-05-16 15:18:53.000000000","message":"Last time I remember discussing unified limits at a summit/PTG [1], we were talking about deprecating user quota from nova. Originally, nova had only project quota and user quota was added later and awkwardly, and from what we understand, the only reason it was added was because there was no other way to have a hierarchy for quota. The operators in the room at that summit/PTG discussion agreed it would be fine to get away from user quota going forward with limits in keystone.\n\nIt\u0027s been quite some time since then though, so maybe we should do another round of feedback from people to confirm we can still go forward without user quota?\n\n[1] https://etherpad.openstack.org/p/BOS-forum-quotas","commit_id":"85b41e149f176510646bbc1ef9af2f4a8a8013e3"}]}
