)]}'
{"keystone/catalog/backends/sql.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"efa742ba65548aa7b425a76cca7f4a6602f3cb39","unresolved":false,"context_lines":[{"line_number":714,"context_line":""},{"line_number":715,"context_line":"    # Service providers group project associations"},{"line_number":716,"context_line":""},{"line_number":717,"context_line":"    def create_sp_group_project_association(self, sp_group_id, project_id):"},{"line_number":718,"context_line":"        session \u003d sql.get_session()"},{"line_number":719,"context_line":"        with session.begin():"},{"line_number":720,"context_line":"            ref \u003d ServiceProvidersGroupProjectAssoc("},{"line_number":721,"context_line":"                service_providers_group\u003dsp_group_id,"},{"line_number":722,"context_line":"                project\u003dproject_id)"},{"line_number":723,"context_line":"            session.add(ref)"},{"line_number":724,"context_line":""},{"line_number":725,"context_line":"    def get_sp_group_project_association(self, sp_group_id, project_id):"},{"line_number":726,"context_line":"        session \u003d sql.get_session()"},{"line_number":727,"context_line":"        sp_group_ref \u003d session.query(ServiceProvidersGroupProjectAssoc).get("},{"line_number":728,"context_line":"            (sp_group_id, project_id))"},{"line_number":729,"context_line":"        if sp_group_ref is None:"},{"line_number":730,"context_line":"            raise exception.NotFound(\"Service providers group association was \""},{"line_number":731,"context_line":"                                     \"not found\")"},{"line_number":732,"context_line":"        return sp_group_ref.to_dict()"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"    def delete_sp_group_project_association(self, sp_group_id, project_id):"},{"line_number":735,"context_line":"        session \u003d sql.get_session()"},{"line_number":736,"context_line":"        with session.begin():"},{"line_number":737,"context_line":"            sp_ref \u003d session.query(ServiceProvidersGroupProjectAssoc).get("},{"line_number":738,"context_line":"                (sp_group_id, project_id))"},{"line_number":739,"context_line":"            session.delete(sp_ref)"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":""},{"line_number":742,"context_line":"class ProjectEndpoint(sql.ModelBase, sql.ModelDictMixin):"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_a2d71cec","line":739,"range":{"start_line":717,"start_character":0,"end_line":739,"end_character":34},"updated":"2016-02-16 03:30:33.000000000","message":"add the abstract methods in keystone.catalog.CatalogDriverV9 and V9CatalogWrapperForV8Driver(...) to support stable backend driver interface.","commit_id":"120e6ef889550ccd72a89c3e1e68797c4ad389b9"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"efa742ba65548aa7b425a76cca7f4a6602f3cb39","unresolved":false,"context_lines":[{"line_number":805,"context_line":"    description \u003d sql.Column(sql.Text, nullable\u003dTrue)"},{"line_number":806,"context_line":""},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"class ServiceProvidersGroupProjectAssoc(sql.ModelBase, sql.ModelDictMixin):"},{"line_number":809,"context_line":"    \"\"\"Service providers group project associations.\"\"\""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    __tablename__ \u003d \u0027service_providers_group_project_association\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_a2ba7c08","line":808,"updated":"2016-02-16 03:30:33.000000000","message":"why not do this in class ServiceProvidersGroupMembership(sql.ModelBase, sql.ModelDictMixin)? \n\nCould the class ServiceProvidersGroupMembership(...) be used for another purpose?\n\nIn the table of `service_providers_group_members`, one sp id is mapped to one sp group id, is that really necessary?","commit_id":"120e6ef889550ccd72a89c3e1e68797c4ad389b9"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"efa742ba65548aa7b425a76cca7f4a6602f3cb39","unresolved":false,"context_lines":[{"line_number":809,"context_line":"    \"\"\"Service providers group project associations.\"\"\""},{"line_number":810,"context_line":""},{"line_number":811,"context_line":"    __tablename__ \u003d \u0027service_providers_group_project_association\u0027"},{"line_number":812,"context_line":"    attributes \u003d [\u0027service_providers_group\u0027, \u0027project\u0027]"},{"line_number":813,"context_line":""},{"line_number":814,"context_line":"    service_providers_group \u003d sql.Column("},{"line_number":815,"context_line":"        sql.String(64),"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_a2ff1ca9","line":812,"range":{"start_line":812,"start_character":46,"end_line":812,"end_character":53},"updated":"2016-02-16 03:30:33.000000000","message":"change this to [\u0027service_providers_group_id\u0027, \u0027project_id\u0027].","commit_id":"120e6ef889550ccd72a89c3e1e68797c4ad389b9"}],"keystone/catalog/routers.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"efa742ba65548aa7b425a76cca7f4a6602f3cb39","unresolved":false,"context_lines":[{"line_number":278,"context_line":"                \u0027service_providers_group_id\u0027: SP_GROUP_PARAMETER_RELATION,"},{"line_number":279,"context_line":"            })"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"        # Service providers group associations with projects"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"        self._add_resource("},{"line_number":284,"context_line":"            mapper, project_service_providers_group_controller,"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_4283b004","line":281,"range":{"start_line":281,"start_character":52,"end_line":281,"end_character":60},"updated":"2016-02-16 03:30:33.000000000","message":"with project","commit_id":"120e6ef889550ccd72a89c3e1e68797c4ad389b9"}]}
