)]}'
{"etc/neutron/plugins/ml2/ml2_conf_cisco.ini":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d313a30a800e481323f689be1613a0e7ad3b1d95","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# apic_entity_profile\u003dopenstack_entity"},{"line_number":74,"context_line":"# apic_function_profile\u003dopenstack_function"},{"line_number":75,"context_line":"# apic_app_profile_name\u003dopenstack_app"},{"line_number":76,"context_line":"# Agent timers for State reporting and topology discovery"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"# Specify your network topology."},{"line_number":79,"context_line":"# This section indicates how your compute nodes are connected to the fabric\u0027s"}],"source_content_type":"text/x-properties","patch_set":6,"id":"1abeadc6_ce6fd5fa","line":76,"updated":"2014-08-29 00:17:18.000000000","message":"is something missing here?","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"8731f1875a74d263924c733fe970147e2b4a5603","unresolved":false,"context_lines":[{"line_number":73,"context_line":"# apic_entity_profile\u003dopenstack_entity"},{"line_number":74,"context_line":"# apic_function_profile\u003dopenstack_function"},{"line_number":75,"context_line":"# apic_app_profile_name\u003dopenstack_app"},{"line_number":76,"context_line":"# Agent timers for State reporting and topology discovery"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"# Specify your network topology."},{"line_number":79,"context_line":"# This section indicates how your compute nodes are connected to the fabric\u0027s"}],"source_content_type":"text/x-properties","patch_set":6,"id":"1abeadc6_18bbce0f","line":76,"in_reply_to":"1abeadc6_ce6fd5fa","updated":"2014-08-29 00:22:26.000000000","message":"More than that, this shouldn\u0027t be here at all :)","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"}],"neutron/db/migration/alembic_migrations/versions/32f3915891fd_cisco_apic_driver_update.py":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d313a30a800e481323f689be1613a0e7ad3b1d95","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# revision identifiers, used by Alembic."},{"line_number":17,"context_line":"revision \u003d \u002732f3915891fd\u0027"},{"line_number":18,"context_line":"down_revision \u003d \u0027aae5706a396\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_82c05151","line":15,"updated":"2014-08-29 00:17:18.000000000","message":"I think you will need to add some comments here so that it shows up in the migration logs:\n\n\n    \"\"\" cisco_apic_driver_update\n\n    Revision ID: 32f3915891fd\n    \"\"\"","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"a32c63c1bc4499c0a887783bbe783246d3d9c7b2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# revision identifiers, used by Alembic."},{"line_number":17,"context_line":"revision \u003d \u002732f3915891fd\u0027"},{"line_number":18,"context_line":"down_revision \u003d \u0027aae5706a396\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_18ff2535","line":15,"in_reply_to":"1abeadc6_51d1a155","updated":"2014-08-29 16:50:56.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"8731f1875a74d263924c733fe970147e2b4a5603","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# revision identifiers, used by Alembic."},{"line_number":17,"context_line":"revision \u003d \u002732f3915891fd\u0027"},{"line_number":18,"context_line":"down_revision \u003d \u0027aae5706a396\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_f848d22e","line":15,"in_reply_to":"1abeadc6_82c05151","updated":"2014-08-29 00:22:26.000000000","message":"I willingly removed those to avoid keeping them updated together with the \"revision\" and \"down_revision\" attribute... I\u0027ll add them back","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"cfa164c94aeed2d81742e98ae7eea63d39d418c1","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"# revision identifiers, used by Alembic."},{"line_number":17,"context_line":"revision \u003d \u002732f3915891fd\u0027"},{"line_number":18,"context_line":"down_revision \u003d \u0027aae5706a396\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_51d1a155","line":15,"in_reply_to":"1abeadc6_f848d22e","updated":"2014-08-29 02:58:13.000000000","message":"you dont need the down revision in the comments...","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d313a30a800e481323f689be1613a0e7ad3b1d95","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# revision identifiers, used by Alembic."},{"line_number":17,"context_line":"revision \u003d \u002732f3915891fd\u0027"},{"line_number":18,"context_line":"down_revision \u003d \u0027aae5706a396\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from alembic import op"},{"line_number":22,"context_line":"import sqlalchemy as sa"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_02c28184","line":19,"updated":"2014-08-29 00:17:18.000000000","message":"keep an eye on the down_revision","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"8731f1875a74d263924c733fe970147e2b4a5603","unresolved":false,"context_lines":[{"line_number":16,"context_line":"# revision identifiers, used by Alembic."},{"line_number":17,"context_line":"revision \u003d \u002732f3915891fd\u0027"},{"line_number":18,"context_line":"down_revision \u003d \u0027aae5706a396\u0027"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from alembic import op"},{"line_number":22,"context_line":"import sqlalchemy as sa"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_1852eedd","line":19,"in_reply_to":"1abeadc6_02c28184","updated":"2014-08-29 00:22:26.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"}],"neutron/plugins/ml2/drivers/cisco/apic/apic_model.py":[{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d313a30a800e481323f689be1613a0e7ad3b1d95","unresolved":false,"context_lines":[{"line_number":67,"context_line":"class ApicName(model_base.BASEV2):"},{"line_number":68,"context_line":"    \"\"\"Mapping of names created on the APIC.\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    __tablename__ \u003d \u0027cisco_ml2_apic_namemap\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    neutron_id \u003d sa.Column(sa.String(36), nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":73,"context_line":"    neutron_type \u003d sa.Column(sa.String(32), nullable\u003dFalse, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_e2266515","line":70,"updated":"2014-08-29 00:17:18.000000000","message":"the convention is to use a plural here","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"8731f1875a74d263924c733fe970147e2b4a5603","unresolved":false,"context_lines":[{"line_number":67,"context_line":"class ApicName(model_base.BASEV2):"},{"line_number":68,"context_line":"    \"\"\"Mapping of names created on the APIC.\"\"\""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    __tablename__ \u003d \u0027cisco_ml2_apic_namemap\u0027"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    neutron_id \u003d sa.Column(sa.String(36), nullable\u003dFalse, primary_key\u003dTrue)"},{"line_number":73,"context_line":"    neutron_type \u003d sa.Column(sa.String(32), nullable\u003dFalse, primary_key\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_585f06e5","line":70,"in_reply_to":"1abeadc6_e2266515","updated":"2014-08-29 00:22:26.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d313a30a800e481323f689be1613a0e7ad3b1d95","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        return contract"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def add_hostlink(self, host, ifname, ifmac, swid, module, port):"},{"line_number":151,"context_line":"        row \u003d HostLink(host\u003dhost, ifname\u003difname, ifmac\u003difmac,"},{"line_number":152,"context_line":"                       swid\u003dswid, module\u003dmodule, port\u003dport)"},{"line_number":153,"context_line":"        with self.session.begin(subtransactions\u003dTrue):"},{"line_number":154,"context_line":"            self.session.merge(row)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_a5ad5786","line":151,"updated":"2014-08-29 00:17:18.000000000","message":"row (here and in other places) can be replaced by a more meaningful name, e.g. link","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"8731f1875a74d263924c733fe970147e2b4a5603","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        return contract"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def add_hostlink(self, host, ifname, ifmac, swid, module, port):"},{"line_number":151,"context_line":"        row \u003d HostLink(host\u003dhost, ifname\u003difname, ifmac\u003difmac,"},{"line_number":152,"context_line":"                       swid\u003dswid, module\u003dmodule, port\u003dport)"},{"line_number":153,"context_line":"        with self.session.begin(subtransactions\u003dTrue):"},{"line_number":154,"context_line":"            self.session.merge(row)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_b85adaef","line":151,"in_reply_to":"1abeadc6_a5ad5786","updated":"2014-08-29 00:22:26.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d313a30a800e481323f689be1613a0e7ad3b1d95","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            profile \u003d self.session.query(HostLink).filter_by("},{"line_number":178,"context_line":"                host\u003dhost, ifname\u003difname).first()"},{"line_number":179,"context_line":"            if profile:"},{"line_number":180,"context_line":"                self.session.delete(profile)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def get_switches(self):"},{"line_number":183,"context_line":"        return self.session.query(HostLink.swid).distinct()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_e5258fc2","line":180,"updated":"2014-08-29 00:17:18.000000000","message":"can you do something like:\n\n\n  self.session.query(HostLink).filter_by(host\u003dhost, ifname\u003difname).delete()\n\n\notherwise there is a time window between the first query and the second query","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"cfa164c94aeed2d81742e98ae7eea63d39d418c1","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            profile \u003d self.session.query(HostLink).filter_by("},{"line_number":178,"context_line":"                host\u003dhost, ifname\u003difname).first()"},{"line_number":179,"context_line":"            if profile:"},{"line_number":180,"context_line":"                self.session.delete(profile)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def get_switches(self):"},{"line_number":183,"context_line":"        return self.session.query(HostLink.swid).distinct()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_31b3454e","line":180,"in_reply_to":"1abeadc6_38fdeab1","updated":"2014-08-29 02:58:13.000000000","message":"But that\u0027s not a database level lock...","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"a32c63c1bc4499c0a887783bbe783246d3d9c7b2","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            profile \u003d self.session.query(HostLink).filter_by("},{"line_number":178,"context_line":"                host\u003dhost, ifname\u003difname).first()"},{"line_number":179,"context_line":"            if profile:"},{"line_number":180,"context_line":"                self.session.delete(profile)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def get_switches(self):"},{"line_number":183,"context_line":"        return self.session.query(HostLink.swid).distinct()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_387f81ac","line":180,"in_reply_to":"1abeadc6_3fe947b7","updated":"2014-08-29 16:50:56.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"8731f1875a74d263924c733fe970147e2b4a5603","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            profile \u003d self.session.query(HostLink).filter_by("},{"line_number":178,"context_line":"                host\u003dhost, ifname\u003difname).first()"},{"line_number":179,"context_line":"            if profile:"},{"line_number":180,"context_line":"                self.session.delete(profile)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def get_switches(self):"},{"line_number":183,"context_line":"        return self.session.query(HostLink.swid).distinct()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_38fdeab1","line":180,"in_reply_to":"1abeadc6_e5258fc2","updated":"2014-08-29 00:22:26.000000000","message":"Is it going to raise an exception if no profile exists?\nAlso, shouldn\u0027t that time window be safe thanks to the subtransaction context?","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b4139dc9081c23f47d4d5fa9f2629a79ad49dcd6","unresolved":false,"context_lines":[{"line_number":177,"context_line":"            profile \u003d self.session.query(HostLink).filter_by("},{"line_number":178,"context_line":"                host\u003dhost, ifname\u003difname).first()"},{"line_number":179,"context_line":"            if profile:"},{"line_number":180,"context_line":"                self.session.delete(profile)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def get_switches(self):"},{"line_number":183,"context_line":"        return self.session.query(HostLink.swid).distinct()"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_3fe947b7","line":180,"in_reply_to":"1abeadc6_e5258fc2","updated":"2014-08-29 04:32:44.000000000","message":"That version could be used indeed, as long as we don\u0027t bother to throw an exception in case the object being deleted is not found.\n\nThis code is also safe from exceptions, but suggested version seems cleaner.","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b4139dc9081c23f47d4d5fa9f2629a79ad49dcd6","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        po \u003d models_v2.Port"},{"line_number":201,"context_line":"        ns \u003d models_ml2.NetworkSegment"},{"line_number":202,"context_line":"        return self.session.query("},{"line_number":203,"context_line":"            po.tenant_id, ns.network_id, ns.segmentation_id).filter("},{"line_number":204,"context_line":"                po.id \u003d\u003d pb.port_id).filter(pb.host \u003d\u003d host).filter("},{"line_number":205,"context_line":"                    po.network_id \u003d\u003d ns.network_id).distinct()"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_bfeb97a2","line":203,"updated":"2014-08-29 04:32:44.000000000","message":"consider using filter_by() with a list of filters.","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"a32c63c1bc4499c0a887783bbe783246d3d9c7b2","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        po \u003d models_v2.Port"},{"line_number":201,"context_line":"        ns \u003d models_ml2.NetworkSegment"},{"line_number":202,"context_line":"        return self.session.query("},{"line_number":203,"context_line":"            po.tenant_id, ns.network_id, ns.segmentation_id).filter("},{"line_number":204,"context_line":"                po.id \u003d\u003d pb.port_id).filter(pb.host \u003d\u003d host).filter("},{"line_number":205,"context_line":"                    po.network_id \u003d\u003d ns.network_id).distinct()"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_83010a07","line":203,"in_reply_to":"1abeadc6_bfeb97a2","updated":"2014-08-29 16:50:56.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":490,"name":"Sumit Naiksatam","email":"sumitnaiksatam@gmail.com","username":"snaiksat"},"change_message_id":"d313a30a800e481323f689be1613a0e7ad3b1d95","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            profile \u003d self.session.query(ApicName).filter_by("},{"line_number":234,"context_line":"                neutron_id\u003dneutron_id).first()"},{"line_number":235,"context_line":"            if profile:"},{"line_number":236,"context_line":"                self.session.delete(profile)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_65197f87","line":236,"updated":"2014-08-29 00:17:18.000000000","message":"ditto","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"8731f1875a74d263924c733fe970147e2b4a5603","unresolved":false,"context_lines":[{"line_number":233,"context_line":"            profile \u003d self.session.query(ApicName).filter_by("},{"line_number":234,"context_line":"                neutron_id\u003dneutron_id).first()"},{"line_number":235,"context_line":"            if profile:"},{"line_number":236,"context_line":"                self.session.delete(profile)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_b8281a34","line":236,"in_reply_to":"1abeadc6_65197f87","updated":"2014-08-29 00:22:26.000000000","message":"see reply above","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"}],"neutron/plugins/ml2/drivers/cisco/apic/config.py":[{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"0527bffb855971693592310d9353053fa96b06ba","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    vpc_dict \u003d {}"},{"line_number":121,"context_line":"    for pair in cfg.CONF.ml2_cisco_apic.apic_vpc_pairs:"},{"line_number":122,"context_line":"        pair_tuple \u003d pair.split(\u0027:\u0027)"},{"line_number":123,"context_line":"        if len(pair_tuple) !\u003d 2 or \\"},{"line_number":124,"context_line":"                any(map(lambda x: not x.isdigit(), pair_tuple)):"},{"line_number":125,"context_line":"            # Validation error, ignore this item"},{"line_number":126,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_638137fa","line":123,"updated":"2014-08-24 03:03:12.000000000","message":"use parens vs backslash for line continuation.","commit_id":"d10b445ea90855f0d701b29b279126a4265119cc"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"6907071609a8514b21e1d8824cca8e9f20b770c6","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    vpc_dict \u003d {}"},{"line_number":121,"context_line":"    for pair in cfg.CONF.ml2_cisco_apic.apic_vpc_pairs:"},{"line_number":122,"context_line":"        pair_tuple \u003d pair.split(\u0027:\u0027)"},{"line_number":123,"context_line":"        if len(pair_tuple) !\u003d 2 or \\"},{"line_number":124,"context_line":"                any(map(lambda x: not x.isdigit(), pair_tuple)):"},{"line_number":125,"context_line":"            # Validation error, ignore this item"},{"line_number":126,"context_line":"            continue"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_b8a43609","line":123,"in_reply_to":"1abeadc6_638137fa","updated":"2014-08-25 16:52:54.000000000","message":"Done","commit_id":"d10b445ea90855f0d701b29b279126a4265119cc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b4139dc9081c23f47d4d5fa9f2629a79ad49dcd6","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    conf_dict \u003d {}"},{"line_number":93,"context_line":"    multi_parser \u003d cfg.MultiConfigParser()"},{"line_number":94,"context_line":"    read_ok \u003d multi_parser.read(cfg.CONF.config_file)"},{"line_number":95,"context_line":"    if len(read_ok) !\u003d len(cfg.CONF.config_file):"},{"line_number":96,"context_line":"        raise cfg.Error(_(\"Some config files were not parsed properly\"))"},{"line_number":97,"context_line":"    for parsed_file in multi_parser.parsed:"},{"line_number":98,"context_line":"        for parsed_item in parsed_file.keys():"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_ff7eefe2","line":95,"updated":"2014-08-29 04:32:44.000000000","message":"that is a strange thing to check and exception message seems confusing","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"a32c63c1bc4499c0a887783bbe783246d3d9c7b2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    conf_dict \u003d {}"},{"line_number":93,"context_line":"    multi_parser \u003d cfg.MultiConfigParser()"},{"line_number":94,"context_line":"    read_ok \u003d multi_parser.read(cfg.CONF.config_file)"},{"line_number":95,"context_line":"    if len(read_ok) !\u003d len(cfg.CONF.config_file):"},{"line_number":96,"context_line":"        raise cfg.Error(_(\"Some config files were not parsed properly\"))"},{"line_number":97,"context_line":"    for parsed_file in multi_parser.parsed:"},{"line_number":98,"context_line":"        for parsed_item in parsed_file.keys():"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_438e127a","line":95,"in_reply_to":"1abeadc6_ff7eefe2","updated":"2014-08-29 16:50:56.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"}],"neutron/plugins/ml2/drivers/cisco/apic/mechanism_apic.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"b4139dc9081c23f47d4d5fa9f2629a79ad49dcd6","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            gateway_ip \u003d subnet[\u0027gateway_ip\u0027]"},{"line_number":168,"context_line":"            cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":169,"context_line":"            netmask \u003d str(cidr.prefixlen)"},{"line_number":170,"context_line":"            gateway_ip \u003d gateway_ip + \u0027/\u0027 + netmask"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            # Convert to APIC IDs"},{"line_number":173,"context_line":"            tenant_id \u003d self.name_mapper.tenant(context, tenant_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_1f9e4b07","line":170,"updated":"2014-08-29 04:32:44.000000000","message":"consider reordering lines and do something like:\n gateway_ip \u003d \u0027%s/%s\u0027 % (subnet[\u0027gateway_ip\u0027], netmask)","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"},{"author":{"_account_id":7987,"name":"Ivar Lazzaro","email":"ivarlazzaro@gmail.com","username":"Ivar"},"change_message_id":"a32c63c1bc4499c0a887783bbe783246d3d9c7b2","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            gateway_ip \u003d subnet[\u0027gateway_ip\u0027]"},{"line_number":168,"context_line":"            cidr \u003d netaddr.IPNetwork(subnet[\u0027cidr\u0027])"},{"line_number":169,"context_line":"            netmask \u003d str(cidr.prefixlen)"},{"line_number":170,"context_line":"            gateway_ip \u003d gateway_ip + \u0027/\u0027 + netmask"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"            # Convert to APIC IDs"},{"line_number":173,"context_line":"            tenant_id \u003d self.name_mapper.tenant(context, tenant_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1abeadc6_4360d2ce","line":170,"in_reply_to":"1abeadc6_1f9e4b07","updated":"2014-08-29 16:50:56.000000000","message":"Done","commit_id":"d820451730c3ffa37404df46f6cb7e1665c14ebf"}]}
