)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c4762be2928293aff7f91001818ac0b803a68aff","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove unnecessary overrides in Subnetpool OVO"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The implementation of Subnetpool OVO overrides get_object and"},{"line_number":10,"context_line":"objects methods when it\u0027s not required. This patch removes doesn\u0027t"},{"line_number":11,"context_line":"overrided methods and modifies the overrided create and update"},{"line_number":12,"context_line":"methods to standarize them."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_306c9934","line":10,"range":{"start_line":10,"start_character":59,"end_line":10,"end_character":66},"updated":"2017-02-08 14:37:15.000000000","message":"? remove","commit_id":"576d57b645c6b5a1c674d48b2417f723f541a343"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"c4762be2928293aff7f91001818ac0b803a68aff","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove unnecessary overrides in Subnetpool OVO"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The implementation of Subnetpool OVO overrides get_object and"},{"line_number":10,"context_line":"objects methods when it\u0027s not required. This patch removes doesn\u0027t"},{"line_number":11,"context_line":"overrided methods and modifies the overrided create and update"},{"line_number":12,"context_line":"methods to standarize them."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1a430d35_d08275c7","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":7},"updated":"2017-02-08 14:37:15.000000000","message":"get_objects","commit_id":"576d57b645c6b5a1c674d48b2417f723f541a343"}],"neutron/objects/subnetpool.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"569a25e9f26252d934ff8f02c1d4503c300301f7","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            self.prefixes \u003d []"},{"line_number":62,"context_line":"        self.obj_reset_changes([\u0027prefixes\u0027])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _attach_prefixes(self, prefixes):"},{"line_number":65,"context_line":"        SubnetPoolPrefix.delete_objects(self.obj_context,"},{"line_number":66,"context_line":"                                        subnetpool_id\u003dself.id)"},{"line_number":67,"context_line":"        if prefixes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_0eb9ecec","line":64,"range":{"start_line":64,"start_character":31,"end_line":64,"end_character":39},"updated":"2016-12-19 08:38:00.000000000","message":"should this have a default value","commit_id":"09ccf10aa7b6bad9544816545f72fe0aecdb9e9c"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"1b2b1be1260ccf791469ca2ed75dfb9b6f914162","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            self.prefixes \u003d []"},{"line_number":62,"context_line":"        self.obj_reset_changes([\u0027prefixes\u0027])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _attach_prefixes(self, prefixes):"},{"line_number":65,"context_line":"        SubnetPoolPrefix.delete_objects(self.obj_context,"},{"line_number":66,"context_line":"                                        subnetpool_id\u003dself.id)"},{"line_number":67,"context_line":"        if prefixes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_17ad5988","line":64,"range":{"start_line":64,"start_character":31,"end_line":64,"end_character":39},"in_reply_to":"1a6eadb0_0eb9ecec","updated":"2016-12-19 23:09:18.000000000","message":"Yeah, maybe None","commit_id":"09ccf10aa7b6bad9544816545f72fe0aecdb9e9c"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"71c05c360801b0fe8b69d5a20c412424c57a3bff","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            self.prefixes \u003d []"},{"line_number":62,"context_line":"        self.obj_reset_changes([\u0027prefixes\u0027])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _attach_prefixes(self, prefixes):"},{"line_number":65,"context_line":"        SubnetPoolPrefix.delete_objects(self.obj_context,"},{"line_number":66,"context_line":"                                        subnetpool_id\u003dself.id)"},{"line_number":67,"context_line":"        if prefixes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_77f20d71","line":64,"range":{"start_line":64,"start_character":31,"end_line":64,"end_character":39},"in_reply_to":"1a6eadb0_17ad5988","updated":"2016-12-19 23:13:59.000000000","message":"I realized that the other methods don\u0027t provide a default value for this.  I\u0027ll keep it as it is until we normalized the rest.","commit_id":"09ccf10aa7b6bad9544816545f72fe0aecdb9e9c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"569a25e9f26252d934ff8f02c1d4503c300301f7","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        self.obj_reset_changes([\u0027prefixes\u0027])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _attach_prefixes(self, prefixes):"},{"line_number":65,"context_line":"        SubnetPoolPrefix.delete_objects(self.obj_context,"},{"line_number":66,"context_line":"                                        subnetpool_id\u003dself.id)"},{"line_number":67,"context_line":"        if prefixes:"},{"line_number":68,"context_line":"            for prefix in prefixes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_ae1c7814","line":65,"updated":"2016-12-19 08:38:00.000000000","message":"why are you deleting the object here. please add a comment?","commit_id":"09ccf10aa7b6bad9544816545f72fe0aecdb9e9c"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"1b2b1be1260ccf791469ca2ed75dfb9b6f914162","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        self.obj_reset_changes([\u0027prefixes\u0027])"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _attach_prefixes(self, prefixes):"},{"line_number":65,"context_line":"        SubnetPoolPrefix.delete_objects(self.obj_context,"},{"line_number":66,"context_line":"                                        subnetpool_id\u003dself.id)"},{"line_number":67,"context_line":"        if prefixes:"},{"line_number":68,"context_line":"            for prefix in prefixes:"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_77084d92","line":65,"in_reply_to":"1a6eadb0_ae1c7814","updated":"2016-12-19 23:09:18.000000000","message":"I was using the same approach like port[1] and network[2] are using.  But ideally, this won\u0027t affect during the creation because there\u0027s nothing to delete.\n\n[1] https://github.com/openstack/neutron/blob/master/neutron/objects/ports.py#L294-L319\n[2] https://github.com/openstack/neutron/blob/master/neutron/objects/network.py#L153-L167","commit_id":"09ccf10aa7b6bad9544816545f72fe0aecdb9e9c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"569a25e9f26252d934ff8f02c1d4503c300301f7","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def create(self):"},{"line_number":76,"context_line":"        fields \u003d self.obj_get_changes()"},{"line_number":77,"context_line":"        with db_api.autonested_transaction(self.obj_context.session):"},{"line_number":78,"context_line":"            prefixes \u003d self.prefixes"},{"line_number":79,"context_line":"            if prefixes is None:"},{"line_number":80,"context_line":"                prefixes \u003d []"},{"line_number":81,"context_line":"            super(SubnetPool, self).create()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_eec4b060","line":78,"range":{"start_line":78,"start_character":12,"end_line":78,"end_character":36},"updated":"2016-12-19 08:38:00.000000000","message":"prefixes \u003d self.prefixes or []","commit_id":"09ccf10aa7b6bad9544816545f72fe0aecdb9e9c"},{"author":{"_account_id":8726,"name":"Victor Morales","email":"chipahuac@hotmail.com","username":"electrocucaracha"},"change_message_id":"1b2b1be1260ccf791469ca2ed75dfb9b6f914162","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def create(self):"},{"line_number":76,"context_line":"        fields \u003d self.obj_get_changes()"},{"line_number":77,"context_line":"        with db_api.autonested_transaction(self.obj_context.session):"},{"line_number":78,"context_line":"            prefixes \u003d self.prefixes"},{"line_number":79,"context_line":"            if prefixes is None:"},{"line_number":80,"context_line":"                prefixes \u003d []"},{"line_number":81,"context_line":"            super(SubnetPool, self).create()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a6eadb0_f7f45d88","line":78,"range":{"start_line":78,"start_character":12,"end_line":78,"end_character":36},"in_reply_to":"1a6eadb0_eec4b060","updated":"2016-12-19 23:09:18.000000000","message":"Done","commit_id":"09ccf10aa7b6bad9544816545f72fe0aecdb9e9c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0d3eea4e4c691afbf08d13f0bcbc7f59fcd243f9","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":54,"context_line":"        super(SubnetPool, self).from_db_object(db_obj)"},{"line_number":55,"context_line":"        if db_obj.get(\u0027prefixes\u0027, []):"},{"line_number":56,"context_line":"            self.prefixes \u003d ["},{"line_number":57,"context_line":"                prefix.cidr"},{"line_number":58,"context_line":"                for prefix in db_obj.prefixes"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_8e2289a1","line":55,"updated":"2017-02-08 16:36:26.000000000","message":"There\u0027s no reason for the default value here. get() will return None without it, which will is also falsey and slightly more efficient.","commit_id":"da4b3600355fe4a4f4f1ce03368f05c88a9332d2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0d3eea4e4c691afbf08d13f0bcbc7f59fcd243f9","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    def _attach_prefixes(self, prefixes):"},{"line_number":65,"context_line":"        SubnetPoolPrefix.delete_objects(self.obj_context,"},{"line_number":66,"context_line":"                                        subnetpool_id\u003dself.id)"},{"line_number":67,"context_line":"        if prefixes:"},{"line_number":68,"context_line":"            for prefix in prefixes:"},{"line_number":69,"context_line":"                SubnetPoolPrefix(self.obj_context, subnetpool_id\u003dself.id,"},{"line_number":70,"context_line":"                                 cidr\u003dprefix).create()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_4ed6e14f","line":67,"updated":"2017-02-08 16:36:26.000000000","message":"Unless prefixes can be a non-iterable here (i.e. None), then the conditional is unnecessary, as the loop won\u0027t run on an empty list anyway.\n\nAnd if prefixes is actually null, do you actually want to set self.prefixes to None? It seems like you might want to just abort early instead.","commit_id":"da4b3600355fe4a4f4f1ce03368f05c88a9332d2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"0d3eea4e4c691afbf08d13f0bcbc7f59fcd243f9","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    def create(self):"},{"line_number":76,"context_line":"        fields \u003d self.obj_get_changes()"},{"line_number":77,"context_line":"        with db_api.autonested_transaction(self.obj_context.session):"},{"line_number":78,"context_line":"            prefixes \u003d self.prefixes or []"},{"line_number":79,"context_line":"            super(SubnetPool, self).create()"},{"line_number":80,"context_line":"            if \u0027prefixes\u0027 in fields:"},{"line_number":81,"context_line":"                self._attach_prefixes(prefixes)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1a430d35_6e255d5a","line":78,"updated":"2017-02-08 16:36:26.000000000","message":"Is this only here because of L71?","commit_id":"da4b3600355fe4a4f4f1ce03368f05c88a9332d2"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"eb51e0e5cafed267be01834f6d01f50125b83b1f","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def from_db_object(self, db_obj):"},{"line_number":54,"context_line":"        super(SubnetPool, self).from_db_object(db_obj)"},{"line_number":55,"context_line":"        self.prefixes \u003d []"},{"line_number":56,"context_line":"        if db_obj[\u0027prefixes\u0027]:"},{"line_number":57,"context_line":"            self.prefixes \u003d ["},{"line_number":58,"context_line":"                prefix.cidr"},{"line_number":59,"context_line":"                for prefix in db_obj.prefixes"},{"line_number":60,"context_line":"            ]"},{"line_number":61,"context_line":"        self.obj_reset_changes([\u0027prefixes\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _attach_prefixes(self, prefixes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da36d5c6_169ef462","line":60,"range":{"start_line":55,"start_character":8,"end_line":60,"end_character":13},"updated":"2017-02-23 05:13:02.000000000","message":"self.prefixes \u003d [\n    prefix.cidr\n    for prefix in db_obj.prefixes\n] if db_obj.prefixes else []","commit_id":"b61167bc541d3dee7e6e8e5dfc82a50d1cc735f5"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f726ce6468dfb95474f035d0ecedd9a3941a23de","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            self.prefixes \u003d ["},{"line_number":58,"context_line":"                prefix.cidr"},{"line_number":59,"context_line":"                for prefix in db_obj.prefixes"},{"line_number":60,"context_line":"            ]"},{"line_number":61,"context_line":"        self.obj_reset_changes([\u0027prefixes\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def _attach_prefixes(self, prefixes):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_5626fcce","line":60,"in_reply_to":"da36d5c6_169ef462","updated":"2017-03-01 18:18:02.000000000","message":"I\u0027d write this more like how Ihar illustrated it, as well. You could even simplify it further:\n\n  self.prefixes \u003d [prefix.cidr for prefix in db_obj.prefixes or []]\n\nThe \"or []\" is only necessary if it isn\u0027t always iterable (e.g. if it\u0027s nullable). For example:\n\n  \u003e\u003e\u003e [not x for x in None or [True]]\n  [False]\n\nIn either case, you only have to assign to self.prefixes once, and it\u0027s clear that the entire code block is written to achieve that singular goal.","commit_id":"b61167bc541d3dee7e6e8e5dfc82a50d1cc735f5"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"f726ce6468dfb95474f035d0ecedd9a3941a23de","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            prefixes \u003d self.prefixes"},{"line_number":77,"context_line":"            super(SubnetPool, self).create()"},{"line_number":78,"context_line":"            if \u0027prefixes\u0027 in fields:"},{"line_number":79,"context_line":"                self._attach_prefixes(prefixes)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    # TODO(ihrachys): Consider extending base to trigger registered methods"},{"line_number":82,"context_line":"    def update(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba2be162_19de773f","line":79,"updated":"2017-03-01 18:18:02.000000000","message":"Is there any reason you can\u0027t skip the indirection in L76 with:\n\n  self._attach_prefixes(self.prefixes)\n\n?","commit_id":"b61167bc541d3dee7e6e8e5dfc82a50d1cc735f5"}]}
