)]}'
{"neutron/db/ipam_backend_mixin.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2dbebf5e84247ebf4209667d5a975b0ea437852f","unresolved":false,"context_lines":[{"line_number":594,"context_line":"        return query.filter(models_v2.Subnet.network_id \u003d\u003d network_id)"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def _query_filter_service_subnets(self, query, service_type):"},{"line_number":597,"context_line":"        # TODO(korzen) use SubnetServiceType OVO here"},{"line_number":598,"context_line":"        ServiceType \u003d sst_model.SubnetServiceType"},{"line_number":599,"context_line":"        query \u003d query.add_entity(ServiceType)"},{"line_number":600,"context_line":"        query \u003d query.outerjoin(ServiceType)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_bae3d832","line":597,"updated":"2016-09-27 21:56:29.000000000","message":"nit: missing \":\"\nWhat are the plans to implement SubnetServiceType here?","commit_id":"c7f159309b7f46de6803ec08bc34694a64e76069"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"bbe68572f7c2ee5baf8a6d1d0159dadb168fbb39","unresolved":false,"context_lines":[{"line_number":594,"context_line":"        return query.filter(models_v2.Subnet.network_id \u003d\u003d network_id)"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    def _query_filter_service_subnets(self, query, service_type):"},{"line_number":597,"context_line":"        # TODO(korzen) use SubnetServiceType OVO here"},{"line_number":598,"context_line":"        ServiceType \u003d sst_model.SubnetServiceType"},{"line_number":599,"context_line":"        query \u003d query.add_entity(ServiceType)"},{"line_number":600,"context_line":"        query \u003d query.outerjoin(ServiceType)"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_a4164853","line":597,"in_reply_to":"5a8bc5a2_bae3d832","updated":"2016-09-28 09:05:57.000000000","message":"_query_filter_service_subnets should be moved in objects/subnet.py and there we can work on building the query.","commit_id":"c7f159309b7f46de6803ec08bc34694a64e76069"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"7242aee38f0322f82cdfc9499998eba6dc07335a","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        old_types \u003d subnet_obj.SubnetServiceType.get_objects("},{"line_number":186,"context_line":"            context, subnet_id\u003dsubnet_id)"},{"line_number":187,"context_line":"        for service_type in old_types:"},{"line_number":188,"context_line":"            service_type.delete()"},{"line_number":189,"context_line":"        updated_types \u003d s.pop(\u0027service_types\u0027)"},{"line_number":190,"context_line":"        for service_type in updated_types:"},{"line_number":191,"context_line":"            new_type \u003d subnet_obj.SubnetServiceType(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_9c40cd58","line":188,"updated":"2016-11-23 14:44:40.000000000","message":"Don\u0027t we need an if statement to check if service_type exists before doing the delete?","commit_id":"e5971a02bb5c3f1c7ca59d2333226faf4bb80f8b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"854a161ba738aa9bea7c176588770a628f599de2","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        old_types \u003d subnet_obj.SubnetServiceType.get_objects("},{"line_number":186,"context_line":"            context, subnet_id\u003dsubnet_id)"},{"line_number":187,"context_line":"        for service_type in old_types:"},{"line_number":188,"context_line":"            service_type.delete()"},{"line_number":189,"context_line":"        updated_types \u003d s.pop(\u0027service_types\u0027)"},{"line_number":190,"context_line":"        for service_type in updated_types:"},{"line_number":191,"context_line":"            new_type \u003d subnet_obj.SubnetServiceType(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_36701fdc","line":188,"in_reply_to":"5a74a57a_62f34874","updated":"2016-11-28 13:23:27.000000000","message":"Right, and the method expects a transaction opened already.","commit_id":"e5971a02bb5c3f1c7ca59d2333226faf4bb80f8b"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"f62484c9525a4e41a155a5d0f46e40bd42225d40","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        old_types \u003d subnet_obj.SubnetServiceType.get_objects("},{"line_number":186,"context_line":"            context, subnet_id\u003dsubnet_id)"},{"line_number":187,"context_line":"        for service_type in old_types:"},{"line_number":188,"context_line":"            service_type.delete()"},{"line_number":189,"context_line":"        updated_types \u003d s.pop(\u0027service_types\u0027)"},{"line_number":190,"context_line":"        for service_type in updated_types:"},{"line_number":191,"context_line":"            new_type \u003d subnet_obj.SubnetServiceType(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_62f34874","line":188,"in_reply_to":"5a74a57a_9c40cd58","updated":"2016-11-23 15:04:53.000000000","message":"If you mean:\nif service_type:\n    service_type.delete()\nThen there is no point to check if service_type is not None, because it was just fetched from db in line 185.","commit_id":"e5971a02bb5c3f1c7ca59d2333226faf4bb80f8b"}],"neutron/objects/subnet.py":[{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"2dbebf5e84247ebf4209667d5a975b0ea437852f","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    foreign_keys \u003d {\u0027Subnet\u0027: {\u0027subnet_id\u0027: \u0027id\u0027}}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    primary_keys \u003d [\u0027subnet_id\u0027, \u0027service_type\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    fields \u003d {"},{"line_number":152,"context_line":"        \u0027subnet_id\u0027: obj_fields.UUIDField(),"},{"line_number":153,"context_line":"        \u0027service_type\u0027: obj_fields.StringField()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_5a1f3409","line":150,"updated":"2016-09-27 21:56:29.000000000","message":"Why there is no \"subnet\" synthetic field? I see it\u0027s included in db models [1]\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/db/models/subnet_service_type.py#L34","commit_id":"c7f159309b7f46de6803ec08bc34694a64e76069"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"bbe68572f7c2ee5baf8a6d1d0159dadb168fbb39","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    foreign_keys \u003d {\u0027Subnet\u0027: {\u0027subnet_id\u0027: \u0027id\u0027}}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    primary_keys \u003d [\u0027subnet_id\u0027, \u0027service_type\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    fields \u003d {"},{"line_number":152,"context_line":"        \u0027subnet_id\u0027: obj_fields.UUIDField(),"},{"line_number":153,"context_line":"        \u0027service_type\u0027: obj_fields.StringField()"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a8bc5a2_c13ee628","line":150,"in_reply_to":"5a8bc5a2_5a1f3409","updated":"2016-09-28 09:05:57.000000000","message":"It is backref relationship, which means that servie type is included in Subnet object, not the other way around.","commit_id":"c7f159309b7f46de6803ec08bc34694a64e76069"},{"author":{"_account_id":6951,"name":"Brandon Logan","email":"brandon.logan@rackspace.com","username":"brandon-logan"},"change_message_id":"c12924cb863c4207eff696574ab3c6f491f6754d","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    foreign_keys \u003d {\u0027Subnet\u0027: {\u0027subnet_id\u0027: \u0027id\u0027}}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    primary_keys \u003d [\u0027subnet_id\u0027, \u0027service_type\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    fields \u003d {"},{"line_number":152,"context_line":"        \u0027subnet_id\u0027: obj_fields.UUIDField(),"},{"line_number":153,"context_line":"        \u0027service_type\u0027: obj_fields.StringField()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da6895a0_a331dca4","line":150,"in_reply_to":"5a8bc5a2_c13ee628","updated":"2016-10-21 22:40:45.000000000","message":"Pretty sure subnet is also on the SubnetServiceType model, the backref will just put it on both, and in this case the backref is a One to many relationship (One Subnet to many SubnetServiceTypes).  Unless we\u0027re talking about some kind of OVO backref here I\u0027m unaware of.\n\nSo Yeah I think you do need the subnet synthetic field here.","commit_id":"c7f159309b7f46de6803ec08bc34694a64e76069"},{"author":{"_account_id":14611,"name":"dasm","display_name":"dasm","email":"dsmigiel@redhat.com","username":"dasm"},"change_message_id":"d51f3b854bd3c1de64f3b364dc7261ba79b17be0","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    foreign_keys \u003d {\u0027Subnet\u0027: {\u0027subnet_id\u0027: \u0027id\u0027}}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    primary_keys \u003d [\u0027subnet_id\u0027, \u0027service_type\u0027]"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    fields \u003d {"},{"line_number":152,"context_line":"        \u0027subnet_id\u0027: obj_fields.UUIDField(),"},{"line_number":153,"context_line":"        \u0027service_type\u0027: obj_fields.StringField()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_d1499932","line":150,"in_reply_to":"5a8bc5a2_c13ee628","updated":"2016-10-03 16:13:47.000000000","message":"Thanks","commit_id":"c7f159309b7f46de6803ec08bc34694a64e76069"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"7242aee38f0322f82cdfc9499998eba6dc07335a","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    db_model \u003d subnet_service_type.SubnetServiceType"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    foreign_keys \u003d {\u0027Subnet\u0027: {\u0027subnet_id\u0027: \u0027id\u0027}}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    primary_keys \u003d [\u0027subnet_id\u0027, \u0027service_type\u0027]"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_fffc5340","line":147,"updated":"2016-11-23 14:44:40.000000000","message":"This is not needed right? as we don\u0027t have Subnet synthetic field to load.","commit_id":"e5971a02bb5c3f1c7ca59d2333226faf4bb80f8b"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"854a161ba738aa9bea7c176588770a628f599de2","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    db_model \u003d subnet_service_type.SubnetServiceType"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    foreign_keys \u003d {\u0027Subnet\u0027: {\u0027subnet_id\u0027: \u0027id\u0027}}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    primary_keys \u003d [\u0027subnet_id\u0027, \u0027service_type\u0027]"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_793e0829","line":147,"in_reply_to":"5a74a57a_6268a8f6","updated":"2016-11-28 13:23:27.000000000","message":"Yeah, that\u0027s a bit unclear approach we took with foreign keys, where we need to keep code needed for object A in object B definition. It\u0027s not up to this patch to change it though.","commit_id":"e5971a02bb5c3f1c7ca59d2333226faf4bb80f8b"},{"author":{"_account_id":15518,"name":"Artur Korzeniewski","email":"artur.korzen@wp.pl","username":"akorzeni"},"change_message_id":"f62484c9525a4e41a155a5d0f46e40bd42225d40","unresolved":false,"context_lines":[{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    db_model \u003d subnet_service_type.SubnetServiceType"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    foreign_keys \u003d {\u0027Subnet\u0027: {\u0027subnet_id\u0027: \u0027id\u0027}}"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    primary_keys \u003d [\u0027subnet_id\u0027, \u0027service_type\u0027]"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_6268a8f6","line":147,"in_reply_to":"5a74a57a_fffc5340","updated":"2016-11-23 15:04:53.000000000","message":"Line 147 is for Subnet to load the SubnetServiceType, not the other way around. It is needed for Subnet OVO.","commit_id":"e5971a02bb5c3f1c7ca59d2333226faf4bb80f8b"}],"neutron/tests/unit/objects/test_objects.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"854a161ba738aa9bea7c176588770a628f599de2","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    \u0027SecurityGroupRule\u0027: \u00271.0-e9b8dace9d48b936c62ad40fe1f339d5\u0027,"},{"line_number":60,"context_line":"    \u0027SegmentHostMapping\u0027: \u00271.0-521597cf82ead26217c3bd10738f00f0\u0027,"},{"line_number":61,"context_line":"    \u0027Subnet\u0027: \u00271.0-b71e720f45fff2a39759940e010be7d1\u0027,"},{"line_number":62,"context_line":"    \u0027Subnet\u0027: \u00271.0-9c19023a61b42d29fbf3766df380e5b7\u0027,"},{"line_number":63,"context_line":"    \u0027SubnetPool\u0027: \u00271.0-e8300bfbc4762cc88a7f6205b52da2f8\u0027,"},{"line_number":64,"context_line":"    \u0027SubnetPoolPrefix\u0027: \u00271.0-13c15144135eb869faa4a76dc3ee3b6c\u0027,"},{"line_number":65,"context_line":"    \u0027SubnetServiceType\u0027: \u00271.0-05ae4cdb2a9026a697b143926a1add8c\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_590eac3b","line":62,"updated":"2016-11-28 13:23:27.000000000","message":"hm, why two Subnets?","commit_id":"e5971a02bb5c3f1c7ca59d2333226faf4bb80f8b"}]}
