)]}'
{"keystone/identity/backends/ldap/common.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"345e28d829427b9ed66565d9688a27fd1f437998","unresolved":false,"context_lines":[{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"    DEFAULT_GROUP_OBJECTCLASS \u003d \u0027groupOfNames\u0027"},{"line_number":1783,"context_line":"    DEFAULT_MEMBER_ATTRIBUTE \u003d \u0027member\u0027"},{"line_number":1784,"context_line":"    DEFAULT_GROUP_MEMBERS_ARE_IDS \u003d False"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def __init__(self, conf):"},{"line_number":1787,"context_line":"        super(EnabledEmuMixIn, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_8d7abeb7","line":1784,"range":{"start_line":1784,"start_character":4,"end_line":1784,"end_character":33},"updated":"2019-08-13 17:45:05.000000000","message":"Why is this one needed? Default is already False. See\n\nhttps://github.com/openstack/keystone/blob/master/keystone/conf/ldap.py#L304","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"9969364c1d59af91879d1748de721a1409b2d8e5","unresolved":false,"context_lines":[{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"    DEFAULT_GROUP_OBJECTCLASS \u003d \u0027groupOfNames\u0027"},{"line_number":1783,"context_line":"    DEFAULT_MEMBER_ATTRIBUTE \u003d \u0027member\u0027"},{"line_number":1784,"context_line":"    DEFAULT_GROUP_MEMBERS_ARE_IDS \u003d False"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def __init__(self, conf):"},{"line_number":1787,"context_line":"        super(EnabledEmuMixIn, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_7a684fb9","line":1784,"range":{"start_line":1784,"start_character":4,"end_line":1784,"end_character":33},"in_reply_to":"7faddb67_7ea60aae","updated":"2019-08-14 06:23:10.000000000","message":"Agree completely.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"0ff05d3bcd6866e6d726a603e2cfddb757ce3155","unresolved":false,"context_lines":[{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"    DEFAULT_GROUP_OBJECTCLASS \u003d \u0027groupOfNames\u0027"},{"line_number":1783,"context_line":"    DEFAULT_MEMBER_ATTRIBUTE \u003d \u0027member\u0027"},{"line_number":1784,"context_line":"    DEFAULT_GROUP_MEMBERS_ARE_IDS \u003d False"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def __init__(self, conf):"},{"line_number":1787,"context_line":"        super(EnabledEmuMixIn, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_a83d282d","line":1784,"range":{"start_line":1784,"start_character":4,"end_line":1784,"end_character":33},"in_reply_to":"7faddb67_8d7abeb7","updated":"2019-08-13 17:56:41.000000000","message":"Yeah, this just follows the pattern of the two lines above it.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"af66cad64617c960a01b9733668c2bb1a35e6e78","unresolved":false,"context_lines":[{"line_number":1781,"context_line":""},{"line_number":1782,"context_line":"    DEFAULT_GROUP_OBJECTCLASS \u003d \u0027groupOfNames\u0027"},{"line_number":1783,"context_line":"    DEFAULT_MEMBER_ATTRIBUTE \u003d \u0027member\u0027"},{"line_number":1784,"context_line":"    DEFAULT_GROUP_MEMBERS_ARE_IDS \u003d False"},{"line_number":1785,"context_line":""},{"line_number":1786,"context_line":"    def __init__(self, conf):"},{"line_number":1787,"context_line":"        super(EnabledEmuMixIn, self).__init__(conf)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_7ea60aae","line":1784,"range":{"start_line":1784,"start_character":4,"end_line":1784,"end_character":33},"in_reply_to":"7faddb67_a83d282d","updated":"2019-08-13 19:47:10.000000000","message":"I wonder why we hardcode those to begin with. If some production environment is using groupofNames to manage \"enabled\" users while using posixGroup to manage user group membership that would be wildly insane.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"345e28d829427b9ed66565d9688a27fd1f437998","unresolved":false,"context_lines":[{"line_number":1795,"context_line":"                            self.options_name)"},{"line_number":1796,"context_line":"        self.use_group_config \u003d getattr(conf.ldap, use_group_config)"},{"line_number":1797,"context_line":""},{"line_number":1798,"context_line":"        if not self.use_group_config:"},{"line_number":1799,"context_line":"            self.member_attribute \u003d self.DEFAULT_MEMBER_ATTRIBUTE"},{"line_number":1800,"context_line":"            self.group_objectclass \u003d self.DEFAULT_GROUP_OBJECTCLASS"},{"line_number":1801,"context_line":"            self.group_members_are_ids \u003d self.DEFAULT_GROUP_MEMBERS_ARE_IDS"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_4878348e","line":1798,"range":{"start_line":1798,"start_character":8,"end_line":1798,"end_character":37},"updated":"2019-08-13 17:45:05.000000000","message":"/SMH\n\nI wonder why even bother with this kind of complexity. We should just get rid of this option and always use conf.ldap.group_member_attribute and conf.ldap.group_members_are_ids.\n\nI mean are there production deployments out there that use two different schema for group membership?!!! If there\u0027s one, I would like to know why.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"0ff05d3bcd6866e6d726a603e2cfddb757ce3155","unresolved":false,"context_lines":[{"line_number":1795,"context_line":"                            self.options_name)"},{"line_number":1796,"context_line":"        self.use_group_config \u003d getattr(conf.ldap, use_group_config)"},{"line_number":1797,"context_line":""},{"line_number":1798,"context_line":"        if not self.use_group_config:"},{"line_number":1799,"context_line":"            self.member_attribute \u003d self.DEFAULT_MEMBER_ATTRIBUTE"},{"line_number":1800,"context_line":"            self.group_objectclass \u003d self.DEFAULT_GROUP_OBJECTCLASS"},{"line_number":1801,"context_line":"            self.group_members_are_ids \u003d self.DEFAULT_GROUP_MEMBERS_ARE_IDS"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_e8332061","line":1798,"range":{"start_line":1798,"start_character":8,"end_line":1798,"end_character":37},"in_reply_to":"7faddb67_4878348e","updated":"2019-08-13 17:56:41.000000000","message":"It makes me wonder too. I can\u0027t really imagine it either, especially since it is not configurable otherwise. :/","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"345e28d829427b9ed66565d9688a27fd1f437998","unresolved":false,"context_lines":[{"line_number":1824,"context_line":"        if self.group_members_are_ids:"},{"line_number":1825,"context_line":"            dn \u003d object_id"},{"line_number":1826,"context_line":"        else:"},{"line_number":1827,"context_line":"            dn \u003d self._id_to_dn(object_id)"},{"line_number":1828,"context_line":"        query \u003d \u0027(%s\u003d%s)\u0027 % (self.member_attribute,"},{"line_number":1829,"context_line":"                             ldap.filter.escape_filter_chars(dn))"},{"line_number":1830,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_4830349f","line":1827,"range":{"start_line":1827,"start_character":12,"end_line":1827,"end_character":42},"updated":"2019-08-13 17:45:05.000000000","message":"Why even bother with another search? object_id is already the DN in this case.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"0ff05d3bcd6866e6d726a603e2cfddb757ce3155","unresolved":false,"context_lines":[{"line_number":1824,"context_line":"        if self.group_members_are_ids:"},{"line_number":1825,"context_line":"            dn \u003d object_id"},{"line_number":1826,"context_line":"        else:"},{"line_number":1827,"context_line":"            dn \u003d self._id_to_dn(object_id)"},{"line_number":1828,"context_line":"        query \u003d \u0027(%s\u003d%s)\u0027 % (self.member_attribute,"},{"line_number":1829,"context_line":"                             ldap.filter.escape_filter_chars(dn))"},{"line_number":1830,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_e85a4081","line":1827,"range":{"start_line":1827,"start_character":12,"end_line":1827,"end_character":42},"in_reply_to":"7faddb67_4830349f","updated":"2019-08-13 17:56:41.000000000","message":"No, it\u0027s not. This line is taken from the original file (without conditional). This conditional works like all others on \u0027group_members_are_ids\u0027.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"af66cad64617c960a01b9733668c2bb1a35e6e78","unresolved":false,"context_lines":[{"line_number":1824,"context_line":"        if self.group_members_are_ids:"},{"line_number":1825,"context_line":"            dn \u003d object_id"},{"line_number":1826,"context_line":"        else:"},{"line_number":1827,"context_line":"            dn \u003d self._id_to_dn(object_id)"},{"line_number":1828,"context_line":"        query \u003d \u0027(%s\u003d%s)\u0027 % (self.member_attribute,"},{"line_number":1829,"context_line":"                             ldap.filter.escape_filter_chars(dn))"},{"line_number":1830,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_3edf320d","line":1827,"range":{"start_line":1827,"start_character":12,"end_line":1827,"end_character":42},"in_reply_to":"7faddb67_e85a4081","updated":"2019-08-13 19:47:10.000000000","message":"Sorry I was ranting about the need for_id_to_dn() where object_id is already a DN. Not your fault. Maybe we\u0027ll fix that in the follow-on patch.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"345e28d829427b9ed66565d9688a27fd1f437998","unresolved":false,"context_lines":[{"line_number":1825,"context_line":"            dn \u003d object_id"},{"line_number":1826,"context_line":"        else:"},{"line_number":1827,"context_line":"            dn \u003d self._id_to_dn(object_id)"},{"line_number":1828,"context_line":"        query \u003d \u0027(%s\u003d%s)\u0027 % (self.member_attribute,"},{"line_number":1829,"context_line":"                             ldap.filter.escape_filter_chars(dn))"},{"line_number":1830,"context_line":"        try:"},{"line_number":1831,"context_line":"            enabled_value \u003d conn.search_s(self.enabled_emulation_dn,"},{"line_number":1832,"context_line":"                                          ldap.SCOPE_BASE,"},{"line_number":1833,"context_line":"                                          query, attrlist\u003dDN_ONLY)"},{"line_number":1834,"context_line":"        except ldap.NO_SUCH_OBJECT:"},{"line_number":1835,"context_line":"            return False"},{"line_number":1836,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_a8f768d4","line":1833,"range":{"start_line":1828,"start_character":7,"end_line":1833,"end_character":66},"updated":"2019-08-13 17:45:05.000000000","message":"Definitely room for improvement on this one. We should cache the search result internally and reuse it. This enabled_emulation_dn is a fixed object and it shouldn\u0027t change that often. Perfect candidate for caching.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"af66cad64617c960a01b9733668c2bb1a35e6e78","unresolved":false,"context_lines":[{"line_number":1825,"context_line":"            dn \u003d object_id"},{"line_number":1826,"context_line":"        else:"},{"line_number":1827,"context_line":"            dn \u003d self._id_to_dn(object_id)"},{"line_number":1828,"context_line":"        query \u003d \u0027(%s\u003d%s)\u0027 % (self.member_attribute,"},{"line_number":1829,"context_line":"                             ldap.filter.escape_filter_chars(dn))"},{"line_number":1830,"context_line":"        try:"},{"line_number":1831,"context_line":"            enabled_value \u003d conn.search_s(self.enabled_emulation_dn,"},{"line_number":1832,"context_line":"                                          ldap.SCOPE_BASE,"},{"line_number":1833,"context_line":"                                          query, attrlist\u003dDN_ONLY)"},{"line_number":1834,"context_line":"        except ldap.NO_SUCH_OBJECT:"},{"line_number":1835,"context_line":"            return False"},{"line_number":1836,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_5ef22e9c","line":1833,"range":{"start_line":1828,"start_character":7,"end_line":1833,"end_character":66},"in_reply_to":"7faddb67_6875f0f9","updated":"2019-08-13 19:47:10.000000000","message":"Yeah I agreed. Maybe we can optimize this in the follow-on patch. Beyond that, we really need to re-evaluate this feature. The way it is implemented right now seem overly inefficient and unnecessarily complex.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"},{"author":{"_account_id":30491,"name":"Radosław Piliszek","display_name":"Radek","email":"radek@piliszek.it","username":"yoctozepto","status":"self-employed techologist, collaborating mostly with 7bulls.com"},"change_message_id":"0ff05d3bcd6866e6d726a603e2cfddb757ce3155","unresolved":false,"context_lines":[{"line_number":1825,"context_line":"            dn \u003d object_id"},{"line_number":1826,"context_line":"        else:"},{"line_number":1827,"context_line":"            dn \u003d self._id_to_dn(object_id)"},{"line_number":1828,"context_line":"        query \u003d \u0027(%s\u003d%s)\u0027 % (self.member_attribute,"},{"line_number":1829,"context_line":"                             ldap.filter.escape_filter_chars(dn))"},{"line_number":1830,"context_line":"        try:"},{"line_number":1831,"context_line":"            enabled_value \u003d conn.search_s(self.enabled_emulation_dn,"},{"line_number":1832,"context_line":"                                          ldap.SCOPE_BASE,"},{"line_number":1833,"context_line":"                                          query, attrlist\u003dDN_ONLY)"},{"line_number":1834,"context_line":"        except ldap.NO_SUCH_OBJECT:"},{"line_number":1835,"context_line":"            return False"},{"line_number":1836,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7faddb67_6875f0f9","line":1833,"range":{"start_line":1828,"start_character":7,"end_line":1833,"end_character":66},"in_reply_to":"7faddb67_a8f768d4","updated":"2019-08-13 17:56:41.000000000","message":"I doubt this is in scope of this particular change.","commit_id":"c7fae97d873f72068ca65538ec5b5919c0ac7d5a"}]}
