)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8aaf5844b47b80b6d2a826e5c90a20ed3f5b30f8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds external attachment type validator code for"},{"line_number":10,"context_line":"binding ports with a HOST-ID field that represents"},{"line_number":11,"context_line":"an L2 access point in a network (e.g. switch port + VLAN tag)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This will allow baremetal devices (e.g. Ironic servers) to be"},{"line_number":14,"context_line":"attached to a given Neutron network via the standard ML2 port"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fa98f980_09224fb9","line":11,"updated":"2014-09-01 03:32:09.000000000","message":"can you add a code comment to explain this usage of HOST_ID somewhere appropriate?","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d0a0deb539ca993775dbda6c42cc1d2e5baa20d6","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds external attachment type validator code for"},{"line_number":10,"context_line":"binding ports with a HOST-ID field that represents"},{"line_number":11,"context_line":"an L2 access point in a network (e.g. switch port + VLAN tag)."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This will allow baremetal devices (e.g. Ironic servers) to be"},{"line_number":14,"context_line":"attached to a given Neutron network via the standard ML2 port"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"fa98f980_c0f3b108","line":11,"in_reply_to":"fa98f980_09224fb9","updated":"2014-09-01 08:14:26.000000000","message":"I think the spec should just be updated. I will also add a docimpact so the formats can be reference there.","commit_id":"84720224da6cf09a90a461d868830226c44a3752"}],"neutron/extensions/external_attachment_points.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8aaf5844b47b80b6d2a826e5c90a20ed3f5b30f8","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    try:"},{"line_number":49,"context_line":"        # auto-assign keyword allows the binding driver to pick a VLAN tag"},{"line_number":50,"context_line":"        if (str(vlan) not in [\u0027untagged\u0027, \u0027auto-assign\u0027] and not"},{"line_number":51,"context_line":"            (const.MIN_VLAN_TAG \u003c\u003d int(vlan) \u003c\u003d const.MAX_VLAN_TAG)):"},{"line_number":52,"context_line":"                raise ValueError()"},{"line_number":53,"context_line":"    except ValueError:"},{"line_number":54,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_a9fea369","line":51,"updated":"2014-09-01 03:32:09.000000000","message":"neutron.common.utils.is_valid_vlan_tag ?","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d0a0deb539ca993775dbda6c42cc1d2e5baa20d6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    try:"},{"line_number":49,"context_line":"        # auto-assign keyword allows the binding driver to pick a VLAN tag"},{"line_number":50,"context_line":"        if (str(vlan) not in [\u0027untagged\u0027, \u0027auto-assign\u0027] and not"},{"line_number":51,"context_line":"            (const.MIN_VLAN_TAG \u003c\u003d int(vlan) \u003c\u003d const.MAX_VLAN_TAG)):"},{"line_number":52,"context_line":"                raise ValueError()"},{"line_number":53,"context_line":"    except ValueError:"},{"line_number":54,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_ddaabed3","line":51,"in_reply_to":"fa98f980_a9fea369","updated":"2014-09-01 08:14:26.000000000","message":"i wasn\u0027t aware of that. will adjust","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8aaf5844b47b80b6d2a826e5c90a20ed3f5b30f8","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _verify_valid_type(self, atype):"},{"line_number":115,"context_line":"        return atype in self.ATTACHMENT_VALIDATORS.keys()"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def validate_external_attachment_identifier(self, context, body):"},{"line_number":118,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_e9250b0b","line":115,"updated":"2014-09-01 03:32:09.000000000","message":".keys() seems unnecessary.","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d0a0deb539ca993775dbda6c42cc1d2e5baa20d6","unresolved":false,"context_lines":[{"line_number":112,"context_line":"    }"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _verify_valid_type(self, atype):"},{"line_number":115,"context_line":"        return atype in self.ATTACHMENT_VALIDATORS.keys()"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def validate_external_attachment_identifier(self, context, body):"},{"line_number":118,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_ddf8fee7","line":115,"in_reply_to":"fa98f980_e9250b0b","updated":"2014-09-01 08:14:26.000000000","message":"indeed it does. I was just being explicit but dict iteration operations should be well known.","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8aaf5844b47b80b6d2a826e5c90a20ed3f5b30f8","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def validate_external_attachment_identifier(self, context, body):"},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            etype \u003d body.pop(\u0027type\u0027)"},{"line_number":120,"context_line":"        except KeyError:"},{"line_number":121,"context_line":"            raise InvalidAttachmentFormat("},{"line_number":122,"context_line":"                attachment_type\u003d\u0027unknown\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_09516f62","line":119,"updated":"2014-09-01 03:32:09.000000000","message":"modifying the dict in a \"validate\" method seems confusing.\n\nwhile the following patch seems to restore the dict, it doesn\u0027t always do so.","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d0a0deb539ca993775dbda6c42cc1d2e5baa20d6","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def validate_external_attachment_identifier(self, context, body):"},{"line_number":118,"context_line":"        try:"},{"line_number":119,"context_line":"            etype \u003d body.pop(\u0027type\u0027)"},{"line_number":120,"context_line":"        except KeyError:"},{"line_number":121,"context_line":"            raise InvalidAttachmentFormat("},{"line_number":122,"context_line":"                attachment_type\u003d\u0027unknown\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_80d0c954","line":119,"in_reply_to":"fa98f980_09516f62","updated":"2014-09-01 08:14:26.000000000","message":"All of them should have placed it back at the end. I modified the wrong patch to re-add them.","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"1f23695548a904de87ad3245879df64bd67f5461","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        validator \u003d self.get_validator_for_type(etype)"},{"line_number":129,"context_line":"        validator.validate_attachment_id(context, body)"},{"line_number":130,"context_line":"        # re-add type field so it\u0027s stored in host id"},{"line_number":131,"context_line":"        body[\u0027type\u0027] \u003d etype"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_validator_for_type(self, atype):"},{"line_number":134,"context_line":"        return self.ATTACHMENT_VALIDATORS.get(atype)"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa98f980_ccb92aeb","line":131,"updated":"2014-09-01 10:06:35.000000000","message":"it seems a little difficult to deal with as \"type\" is not restored in case of exception.\nhow about using try-finally or dict copying?","commit_id":"da50f182b6e556061d0382a8213012d2b1a93b15"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"3cd582a89e774e854d4c45d4ef00bd40b2750359","unresolved":false,"context_lines":[{"line_number":118,"context_line":"    def validate_external_attachment_identifier(self, context, body):"},{"line_number":119,"context_line":"        try:"},{"line_number":120,"context_line":"            # remove type field before passing to validator"},{"line_number":121,"context_line":"            to_validate \u003d copy.copy(body)"},{"line_number":122,"context_line":"            etype \u003d to_validate.pop(\u0027type\u0027)"},{"line_number":123,"context_line":"        except KeyError:"},{"line_number":124,"context_line":"            raise InvalidAttachmentFormat("}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_46b956e8","line":121,"updated":"2014-09-02 09:19:49.000000000","message":"it\u0027s better to move this copy outside of try block.","commit_id":"e8b438cd0971643533e965cfdec2dd5bd171ed28"}],"neutron/plugins/ml2/plugin.py":[{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"622b1c17a172f6a3b196437483211a8ae724f4d6","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.db import db_base_plugin_v2"},{"line_number":36,"context_line":"from neutron.db import dvr_mac_db"},{"line_number":37,"context_line":"from neutron.db import external_net_db"},{"line_number":38,"context_line":"from neutron.db import externalattachment_db as extattach_db"},{"line_number":39,"context_line":"from neutron.db import extradhcpopt_db"},{"line_number":40,"context_line":"from neutron.db import models_v2"},{"line_number":41,"context_line":"from neutron.db import quota_db  # noqa"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_f204211a","line":38,"updated":"2014-08-25 07:56:59.000000000","message":"Where is this DB defined?  I did not see this in openstack git? Can you point me to this file.","commit_id":"1fbed31267547237ceef0dc4e1f8a3118e7a2a46"},{"author":{"_account_id":12737,"name":"Jacek Swiderski","email":"jacek.swiderski@codilime.com","username":"Altran"},"change_message_id":"47d26e6837a82a1633d895e4d74401425f4c0e25","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.db import db_base_plugin_v2"},{"line_number":36,"context_line":"from neutron.db import dvr_mac_db"},{"line_number":37,"context_line":"from neutron.db import external_net_db"},{"line_number":38,"context_line":"from neutron.db import externalattachment_db as extattach_db"},{"line_number":39,"context_line":"from neutron.db import extradhcpopt_db"},{"line_number":40,"context_line":"from neutron.db import models_v2"},{"line_number":41,"context_line":"from neutron.db import quota_db  # noqa"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_b0eb81af","line":38,"in_reply_to":"1abeadc6_f204211a","updated":"2014-08-25 08:56:02.000000000","message":"Its in https://review.openstack.org/#/c/97173/10 on which this change depends - there is \"Dependencies\" table on change\u0027s page which You can check (i.e. sometimes UT fail in change that is perquisite and it will cause them to fail in dependant change too).","commit_id":"1fbed31267547237ceef0dc4e1f8a3118e7a2a46"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"8aaf5844b47b80b6d2a826e5c90a20ed3f5b30f8","unresolved":false,"context_lines":[{"line_number":770,"context_line":""},{"line_number":771,"context_line":"        session \u003d context.session"},{"line_number":772,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":773,"context_line":"            self.verify_hostid_for_ext_attach(context, port)"},{"line_number":774,"context_line":"            self._ensure_default_security_group_on_port(context, port)"},{"line_number":775,"context_line":"            sgids \u003d self._get_security_groups_on_port(context, port)"},{"line_number":776,"context_line":"            dhcp_opts \u003d port[\u0027port\u0027].get(edo_ext.EXTRADHCPOPTS, [])"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_69bcbb6d","line":773,"updated":"2014-09-01 03:32:09.000000000","message":"shouldn\u0027t the second argument be attrs?","commit_id":"84720224da6cf09a90a461d868830226c44a3752"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d0a0deb539ca993775dbda6c42cc1d2e5baa20d6","unresolved":false,"context_lines":[{"line_number":770,"context_line":""},{"line_number":771,"context_line":"        session \u003d context.session"},{"line_number":772,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":773,"context_line":"            self.verify_hostid_for_ext_attach(context, port)"},{"line_number":774,"context_line":"            self._ensure_default_security_group_on_port(context, port)"},{"line_number":775,"context_line":"            sgids \u003d self._get_security_groups_on_port(context, port)"},{"line_number":776,"context_line":"            dhcp_opts \u003d port[\u0027port\u0027].get(edo_ext.EXTRADHCPOPTS, [])"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa98f980_5d488e5b","line":773,"in_reply_to":"fa98f980_69bcbb6d","updated":"2014-09-01 08:14:26.000000000","message":"yep","commit_id":"84720224da6cf09a90a461d868830226c44a3752"}]}
