)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-01-06 22:20:04 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a Hyper-V Quantum plugin with VLAN support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Initial Hyper-V Quantum plugin including VLAN support."},{"line_number":10,"context_line":"Support for NVGRE networking will be added in a subsequent patch."},{"line_number":11,"context_line":"The plugin architecture relies heavily on the OVS plugin, with some"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAM3%2F%2Fwes%3D","line":8,"updated":"2013-01-07 14:20:00.000000000","message":"Is there a bug or a blueprint that you can link here?","commit_id":"4adec17a911d84d6e4d7c8466a3612ecb3b26229"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alessandro Pilotti \u003cap@pilotti.it\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-01-08 19:39:53 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a Hyper-V Quantum plugin with VLAN support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Initial Hyper-V Quantum plugin including VLAN support."},{"line_number":10,"context_line":"Support for NVGRE networking will be added in a subsequent patch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2FsZc%3D","line":7,"updated":"2013-01-09 11:45:52.000000000","message":"I think it should be \u0027Adds a Hyper-V Quantum plugin\u0027 since the flat, local are also in this patch.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Alessandro Pilotti \u003cap@pilotti.it\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-01-08 19:39:53 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a Hyper-V Quantum plugin with VLAN support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Initial Hyper-V Quantum plugin including VLAN support."},{"line_number":10,"context_line":"Support for NVGRE networking will be added in a subsequent patch."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2FsMU%3D","line":7,"in_reply_to":"AAAAM3%2F%2FsZc%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-01-08 19:39:53 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a Hyper-V Quantum plugin with VLAN support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Initial Hyper-V Quantum plugin including VLAN support."},{"line_number":10,"context_line":"Support for NVGRE networking will be added in a subsequent patch."},{"line_number":11,"context_line":"The plugin architecture relies heavily on the OVS plugin, with some"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2FsTA%3D","line":8,"updated":"2013-01-09 15:59:37.000000000","message":"As also stated by Yong, according to openstack-wide conventions The commit message must include a reference to the blueprint, preferably after the first line of the commit message.\n\nsomething like\n\nblueprint \u003cyour-lp-blueprint-name\u003e\n\nGerrit will automatically create a link to launchpad from it.\nMore info here: https://www.berrange.com/posts/2012/06/27/thoughts-on-improving-openstack-git-commit-practicehistory/","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2013-01-08 19:39:53 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adds a Hyper-V Quantum plugin with VLAN support"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Initial Hyper-V Quantum plugin including VLAN support."},{"line_number":10,"context_line":"Support for NVGRE networking will be added in a subsequent patch."},{"line_number":11,"context_line":"The plugin architecture relies heavily on the OVS plugin, with some"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2Fpx4%3D","line":8,"in_reply_to":"AAAAM3%2F%2FsTA%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"L3 networking is currently handled on Linux with the existing agents."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"A Nova Quantum Vif plugin is included in the Nova project."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ie64bff448e3fb1129c5e24baaf148cdcc0aed8b9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2FsZg%3D","line":21,"updated":"2013-01-09 11:45:52.000000000","message":"according to commit msg format, we need \u0027blueprint xxxx\u0027.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"L3 networking is currently handled on Linux with the existing agents."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"A Nova Quantum Vif plugin is included in the Nova project."},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: Ie64bff448e3fb1129c5e24baaf148cdcc0aed8b9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAM3%2F%2FsK4%3D","line":21,"in_reply_to":"AAAAM3%2F%2FsZg%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"}],"quantum/plugins/hyperv/__init__.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Cloudbase Solutions Srl"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsSk%3D","line":3,"updated":"2013-01-09 15:59:37.000000000","message":"pedant me says that technically SRL should be all capitals, but don\u0027t bother :)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2013 Cloudbase Solutions Srl"},{"line_number":4,"context_line":"# All Rights Reserved."},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpxg%3D","line":3,"in_reply_to":"AAAAM3%2F%2FsSk%3D","updated":"2013-01-11 00:23:30.000000000","message":":-) Does this apply to \"Inc.\" as well, or is it only for acronyms?","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"}],"quantum/plugins/hyperv/agent/hyperv_quantum_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantum.common import config as logging_config"},{"line_number":29,"context_line":"from quantum.common import topics"},{"line_number":30,"context_line":"from quantum.openstack.common import cfg"},{"line_number":31,"context_line":"from quantum import context"},{"line_number":32,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":33,"context_line":"from quantum.openstack.common.rpc import dispatcher"},{"line_number":34,"context_line":"from quantum.plugins.hyperv.common import constants"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxN4%3D","line":31,"updated":"2013-01-06 18:34:38.000000000","message":"should this be above line 30?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":33,"context_line":"from quantum.openstack.common.rpc import dispatcher"},{"line_number":34,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":35,"context_line":"from quantum.plugins.hyperv.agent import utils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":38,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNw%3D","line":35,"updated":"2013-01-06 18:34:38.000000000","message":"this should be above line 34 - please see HACKING","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    cfg.ListOpt("},{"line_number":41,"context_line":"        \u0027physical_network_vswitch_mappings\u0027,"},{"line_number":42,"context_line":"        default\u003d[],"},{"line_number":43,"context_line":"        help\u003d\u0027List of \u003cphysical_network\u003e:\u003cvswitch\u003e \u0027"},{"line_number":44,"context_line":"        \u0027where the physical networks can be expressed with \u0027"},{"line_number":45,"context_line":"        \u0027wildcards, e.g.: .\"*:external\"\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNs%3D","line":43,"updated":"2013-01-06 18:34:38.000000000","message":"can you please do all messages in the i18n format - this will help the translators - that is _(\"whatever...\")","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        self._setup_rpc()"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _setup_rpc(self):"},{"line_number":70,"context_line":"        #vswitch_id \u003d self._utils.get_vswitch_id(virtual_switch)"},{"line_number":71,"context_line":"        self.agent_id \u003d \u0027hyperv_%s\u0027 % platform.node()"},{"line_number":72,"context_line":"        self.topic \u003d topics.AGENT"},{"line_number":73,"context_line":"        self.plugin_rpc \u003d agent_rpc.PluginApi(topics.PLUGIN)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNo%3D","line":70,"updated":"2013-01-06 18:34:38.000000000","message":"do you need this comment?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        for compre in self._physical_network_mappings:"},{"line_number":101,"context_line":"            if phys_network_name is None:"},{"line_number":102,"context_line":"                phys_network_name \u003d \u0027\u0027"},{"line_number":103,"context_line":"            if compre.match(phys_network_name):"},{"line_number":104,"context_line":"                return self._physical_network_mappings[compre]"},{"line_number":105,"context_line":"        # Not found in the mappings, the vswitch has the same name"},{"line_number":106,"context_line":"        return phys_network_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNk%3D","line":103,"updated":"2013-01-06 18:34:38.000000000","message":"do you need to call this if phys_network_nameis None?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":100,"context_line":"        for compre in self._physical_network_mappings:"},{"line_number":101,"context_line":"            if phys_network_name is None:"},{"line_number":102,"context_line":"                phys_network_name \u003d \u0027\u0027"},{"line_number":103,"context_line":"            if compre.match(phys_network_name):"},{"line_number":104,"context_line":"                return self._physical_network_mappings[compre]"},{"line_number":105,"context_line":"        # Not found in the mappings, the vswitch has the same name"},{"line_number":106,"context_line":"        return phys_network_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxKU%3D","line":103,"in_reply_to":"AAAAM3%2F%2FxNk%3D","updated":"2013-01-06 19:50:34.000000000","message":"Yes, because in that case phys_network_name becomes \u0027\u0027 and can be matched in following regex","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":359,"context_line":"    sys.exit(0)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":""},{"line_number":362,"context_line":"if __name__ \u003d\u003d \"__main__\":"},{"line_number":363,"context_line":"    main()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNg%3D","line":362,"updated":"2013-01-06 18:34:38.000000000","message":"I am not sure if you need this if there is the binary file in /bin","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":273,"context_line":"                LOG.info(_("},{"line_number":274,"context_line":"                    \"Port %(device)s updated. Details: %(details)s\") %"},{"line_number":275,"context_line":"                    locals())"},{"line_number":276,"context_line":"                LOG.debug(\u0027aaa1 \u0027 + str(details))"},{"line_number":277,"context_line":"                self._treat_vif_port("},{"line_number":278,"context_line":"                    details[\u0027port_id\u0027],"},{"line_number":279,"context_line":"                    details[\u0027network_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FweY%3D","line":276,"updated":"2013-01-07 14:20:00.000000000","message":"aaa1?","commit_id":"4adec17a911d84d6e4d7c8466a3612ecb3b26229"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                LOG.info(_("},{"line_number":274,"context_line":"                    \"Port %(device)s updated. Details: %(details)s\") %"},{"line_number":275,"context_line":"                    locals())"},{"line_number":276,"context_line":"                LOG.debug(\u0027aaa1 \u0027 + str(details))"},{"line_number":277,"context_line":"                self._treat_vif_port("},{"line_number":278,"context_line":"                    details[\u0027port_id\u0027],"},{"line_number":279,"context_line":"                    details[\u0027network_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FwbM%3D","line":276,"in_reply_to":"AAAAM3%2F%2FweY%3D","updated":"2013-01-07 14:35:09.000000000","message":"Ops :-)","commit_id":"4adec17a911d84d6e4d7c8466a3612ecb3b26229"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":109,"context_line":"            if port_id in map[\u0027ports\u0027]:"},{"line_number":110,"context_line":"                return (network_id, map)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def network_delete(self, context, **kwargs):"},{"line_number":113,"context_line":"        LOG.debug(_(\"network_delete received\"))"},{"line_number":114,"context_line":"        network_id \u003d kwargs.get(\u0027network_id\u0027)"},{"line_number":115,"context_line":"        LOG.debug(_(\"Deleting network %s\"), network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvPE%3D","line":112,"updated":"2013-01-08 05:57:16.000000000","message":"shoud be more explicit here:\n\ndef network_delete(self, context, network_id\u003dNone):","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":109,"context_line":"            if port_id in map[\u0027ports\u0027]:"},{"line_number":110,"context_line":"                return (network_id, map)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def network_delete(self, context, **kwargs):"},{"line_number":113,"context_line":"        LOG.debug(_(\"network_delete received\"))"},{"line_number":114,"context_line":"        network_id \u003d kwargs.get(\u0027network_id\u0027)"},{"line_number":115,"context_line":"        LOG.debug(_(\"Deleting network %s\"), network_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu8k%3D","line":112,"in_reply_to":"AAAAM3%2F%2FvPE%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            LOG.debug(_(\"Network %s not defined on agent.\"), network_id)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def port_delete(self, context, **kwargs):"},{"line_number":123,"context_line":"        LOG.debug(_(\"port_delete received\"))"},{"line_number":124,"context_line":"        port_id \u003d kwargs.get(\u0027port_id\u0027)"},{"line_number":125,"context_line":"        self._port_unbound(port_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvPA%3D","line":122,"updated":"2013-01-08 05:57:16.000000000","message":"def port_delete(self, context, port_id\u003dNone):","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        else:"},{"line_number":120,"context_line":"            LOG.debug(_(\"Network %s not defined on agent.\"), network_id)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    def port_delete(self, context, **kwargs):"},{"line_number":123,"context_line":"        LOG.debug(_(\"port_delete received\"))"},{"line_number":124,"context_line":"        port_id \u003d kwargs.get(\u0027port_id\u0027)"},{"line_number":125,"context_line":"        self._port_unbound(port_id)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu8g%3D","line":122,"in_reply_to":"AAAAM3%2F%2FvPA%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":124,"context_line":"        port_id \u003d kwargs.get(\u0027port_id\u0027)"},{"line_number":125,"context_line":"        self._port_unbound(port_id)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def port_update(self, context, **kwargs):"},{"line_number":128,"context_line":"        LOG.debug(_(\"port_update received\"))"},{"line_number":129,"context_line":"        port \u003d kwargs.get(\u0027port\u0027)"},{"line_number":130,"context_line":"        network_type \u003d kwargs.get(\u0027network_type\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvO8%3D","line":127,"updated":"2013-01-08 05:57:16.000000000","message":"def port_update(self, context, port\u003dNone, network_type\u003dNone, segementation_id\u003dNone, physical_network\u003dNone):","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        port_id \u003d kwargs.get(\u0027port_id\u0027)"},{"line_number":125,"context_line":"        self._port_unbound(port_id)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    def port_update(self, context, **kwargs):"},{"line_number":128,"context_line":"        LOG.debug(_(\"port_update received\"))"},{"line_number":129,"context_line":"        port \u003d kwargs.get(\u0027port\u0027)"},{"line_number":130,"context_line":"        network_type \u003d kwargs.get(\u0027network_type\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu8c%3D","line":127,"in_reply_to":"AAAAM3%2F%2FvO8%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":146,"context_line":"            vswitch_name \u003d CONF.AGENT.local_network_vswitch"},{"line_number":147,"context_line":"        return vswitch_name"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _provision_network("},{"line_number":150,"context_line":"            self, port_id, net_uuid, network_type,"},{"line_number":151,"context_line":"            physical_network, segmentation_id):"},{"line_number":152,"context_line":"        LOG.info(_(\"Provisioning network %s\"), net_uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvN8%3D","line":149,"updated":"2013-01-08 05:57:16.000000000","message":"args should be on first line of method definition","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            vswitch_name \u003d CONF.AGENT.local_network_vswitch"},{"line_number":147,"context_line":"        return vswitch_name"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"    def _provision_network("},{"line_number":150,"context_line":"            self, port_id, net_uuid, network_type,"},{"line_number":151,"context_line":"            physical_network, segmentation_id):"},{"line_number":152,"context_line":"        LOG.info(_(\"Provisioning network %s\"), net_uuid)"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu8M%3D","line":149,"in_reply_to":"AAAAM3%2F%2FvN8%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":163,"context_line":"            pass"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            raise utils.HyperVException(_("},{"line_number":166,"context_line":"                \"Cannot provision unknown network type %s for network %s\"),"},{"line_number":167,"context_line":"                network_type, net_uuid)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        map \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvNs%3D","line":166,"updated":"2013-01-08 05:57:16.000000000","message":"_( should be on this line","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":163,"context_line":"            pass"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            raise utils.HyperVException(_("},{"line_number":166,"context_line":"                \"Cannot provision unknown network type %s for network %s\"),"},{"line_number":167,"context_line":"                network_type, net_uuid)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        map \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu8A%3D","line":166,"in_reply_to":"AAAAM3%2F%2FvNs%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":189,"context_line":"        del self._network_vswitch_map[net_uuid]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _port_bound("},{"line_number":192,"context_line":"            self, port_id, net_uuid, network_type,"},{"line_number":193,"context_line":"            physical_network, segmentation_id):"},{"line_number":194,"context_line":"        LOG.debug(_(\"Binding port %s\"), port_id)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvNk%3D","line":192,"updated":"2013-01-08 05:57:16.000000000","message":"args should be on first line of method declaration","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        del self._network_vswitch_map[net_uuid]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def _port_bound("},{"line_number":192,"context_line":"            self, port_id, net_uuid, network_type,"},{"line_number":193,"context_line":"            physical_network, segmentation_id):"},{"line_number":194,"context_line":"        LOG.debug(_(\"Binding port %s\"), port_id)"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu78%3D","line":192,"in_reply_to":"AAAAM3%2F%2FvNk%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":204,"context_line":"        self._utils.connect_vnic_to_vswitch(map[\u0027vswitch_name\u0027], port_id)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        if network_type \u003d\u003d constants.TYPE_VLAN:"},{"line_number":207,"context_line":"            LOG.info(_("},{"line_number":208,"context_line":"                \u0027Binding VLAN ID %s to switch port %s\u0027),"},{"line_number":209,"context_line":"                segmentation_id, port_id)"},{"line_number":210,"context_line":"            self._utils.set_vswitch_port_vlan_id("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvNg%3D","line":207,"updated":"2013-01-08 05:57:16.000000000","message":"same as above\n\n_( should precede the string were possible","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        self._utils.connect_vnic_to_vswitch(map[\u0027vswitch_name\u0027], port_id)"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        if network_type \u003d\u003d constants.TYPE_VLAN:"},{"line_number":207,"context_line":"            LOG.info(_("},{"line_number":208,"context_line":"                \u0027Binding VLAN ID %s to switch port %s\u0027),"},{"line_number":209,"context_line":"                segmentation_id, port_id)"},{"line_number":210,"context_line":"            self._utils.set_vswitch_port_vlan_id("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu74%3D","line":207,"in_reply_to":"AAAAM3%2F%2FvNg%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":242,"context_line":"                \u0027added\u0027: added,"},{"line_number":243,"context_line":"                \u0027removed\u0027: removed}"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def _treat_vif_port("},{"line_number":246,"context_line":"            self, port_id, network_id, network_type,"},{"line_number":247,"context_line":"            physical_network, segmentation_id, admin_state_up):"},{"line_number":248,"context_line":"        if self._utils.vnic_port_exists(port_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvPU%3D","line":245,"updated":"2013-01-08 05:57:16.000000000","message":"There should be arguments on the first line before wrapping.\n\ndef _treat_vif_port(self, port_id, network_id, network_type,","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":242,"context_line":"                \u0027added\u0027: added,"},{"line_number":243,"context_line":"                \u0027removed\u0027: removed}"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def _treat_vif_port("},{"line_number":246,"context_line":"            self, port_id, network_id, network_type,"},{"line_number":247,"context_line":"            physical_network, segmentation_id, admin_state_up):"},{"line_number":248,"context_line":"        if self._utils.vnic_port_exists(port_id):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu70%3D","line":245,"in_reply_to":"AAAAM3%2F%2FvPU%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":247,"context_line":"            physical_network, segmentation_id, admin_state_up):"},{"line_number":248,"context_line":"        if self._utils.vnic_port_exists(port_id):"},{"line_number":249,"context_line":"            if admin_state_up:"},{"line_number":250,"context_line":"                self._port_bound("},{"line_number":251,"context_line":"                    port_id, network_id, network_type,"},{"line_number":252,"context_line":"                    physical_network, segmentation_id)"},{"line_number":253,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvPQ%3D","line":250,"updated":"2013-01-08 05:57:16.000000000","message":"same as above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":247,"context_line":"            physical_network, segmentation_id, admin_state_up):"},{"line_number":248,"context_line":"        if self._utils.vnic_port_exists(port_id):"},{"line_number":249,"context_line":"            if admin_state_up:"},{"line_number":250,"context_line":"                self._port_bound("},{"line_number":251,"context_line":"                    port_id, network_id, network_type,"},{"line_number":252,"context_line":"                    physical_network, segmentation_id)"},{"line_number":253,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu7w%3D","line":250,"in_reply_to":"AAAAM3%2F%2FvPQ%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":260,"context_line":"        for device in devices:"},{"line_number":261,"context_line":"            LOG.info(_(\"Adding port %s\") % device)"},{"line_number":262,"context_line":"            try:"},{"line_number":263,"context_line":"                details \u003d self.plugin_rpc.get_device_details(self.context,"},{"line_number":264,"context_line":"                                                             device,"},{"line_number":265,"context_line":"                                                             self.agent_id)"},{"line_number":266,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvNU%3D","line":263,"updated":"2013-01-08 05:57:16.000000000","message":"device_details?","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":260,"context_line":"        for device in devices:"},{"line_number":261,"context_line":"            LOG.info(_(\"Adding port %s\") % device)"},{"line_number":262,"context_line":"            try:"},{"line_number":263,"context_line":"                details \u003d self.plugin_rpc.get_device_details(self.context,"},{"line_number":264,"context_line":"                                                             device,"},{"line_number":265,"context_line":"                                                             self.agent_id)"},{"line_number":266,"context_line":"            except Exception as e:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu7g%3D","line":263,"in_reply_to":"AAAAM3%2F%2FvNU%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":273,"context_line":"                LOG.info(_("},{"line_number":274,"context_line":"                    \"Port %(device)s updated. Details: %(details)s\") %"},{"line_number":275,"context_line":"                    locals())"},{"line_number":276,"context_line":"                self._treat_vif_port("},{"line_number":277,"context_line":"                    details[\u0027port_id\u0027],"},{"line_number":278,"context_line":"                    details[\u0027network_id\u0027],"},{"line_number":279,"context_line":"                    details[\u0027network_type\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvNQ%3D","line":276,"updated":"2013-01-08 05:57:16.000000000","message":"why not pass device details here instead of having to manage 6 params","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":273,"context_line":"                LOG.info(_("},{"line_number":274,"context_line":"                    \"Port %(device)s updated. Details: %(details)s\") %"},{"line_number":275,"context_line":"                    locals())"},{"line_number":276,"context_line":"                self._treat_vif_port("},{"line_number":277,"context_line":"                    details[\u0027port_id\u0027],"},{"line_number":278,"context_line":"                    details[\u0027network_id\u0027],"},{"line_number":279,"context_line":"                    details[\u0027network_type\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu%2BM%3D","line":276,"in_reply_to":"AAAAM3%2F%2FvNQ%3D","updated":"2013-01-08 09:32:52.000000000","message":"Having explicit parameters when possible adds clarity IMO","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":291,"context_line":"                                                             device,"},{"line_number":292,"context_line":"                                                             self.agent_id)"},{"line_number":293,"context_line":"            except Exception as e:"},{"line_number":294,"context_line":"                LOG.debug(_("},{"line_number":295,"context_line":"                    \"Removing port failed for device %s: %s\"),"},{"line_number":296,"context_line":"                    device, e)"},{"line_number":297,"context_line":"                resync \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvNM%3D","line":294,"updated":"2013-01-08 05:57:16.000000000","message":"same as before","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":291,"context_line":"                                                             device,"},{"line_number":292,"context_line":"                                                             self.agent_id)"},{"line_number":293,"context_line":"            except Exception as e:"},{"line_number":294,"context_line":"                LOG.debug(_("},{"line_number":295,"context_line":"                    \"Removing port failed for device %s: %s\"),"},{"line_number":296,"context_line":"                    device, e)"},{"line_number":297,"context_line":"                resync \u003d True"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu7c%3D","line":294,"in_reply_to":"AAAAM3%2F%2FvNM%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#Copyright 2012 Pedro Navarro Perez"},{"line_number":4,"context_line":"#Copyright 2012 Cloudbase Solutions Srl"},{"line_number":5,"context_line":"#All Rights Reserved."},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsSU%3D","line":3,"updated":"2013-01-09 15:59:37.000000000","message":"Unfortunately it seems all patches which were pushed before dec31st now will have sto change their copyright headers","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#Copyright 2012 Pedro Navarro Perez"},{"line_number":4,"context_line":"#Copyright 2012 Cloudbase Solutions Srl"},{"line_number":5,"context_line":"#All Rights Reserved."},{"line_number":6,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpvE%3D","line":3,"in_reply_to":"AAAAM3%2F%2FsSU%3D","updated":"2013-01-11 00:23:30.000000000","message":"D\u0027oh! :-)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def network_delete(self, context, network_id\u003dNone):"},{"line_number":113,"context_line":"        LOG.debug(_(\"network_delete received\"))"},{"line_number":114,"context_line":"        LOG.debug(_(\"Deleting network %s\"), network_id)"},{"line_number":115,"context_line":"        # The network may not be defined on this agent"},{"line_number":116,"context_line":"        if network_id in self._network_vswitch_map:"},{"line_number":117,"context_line":"            self._reclaim_local_network(network_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FseI%3D","line":114,"updated":"2013-01-09 11:03:02.000000000","message":"two much debugs. :)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def network_delete(self, context, network_id\u003dNone):"},{"line_number":113,"context_line":"        LOG.debug(_(\"network_delete received\"))"},{"line_number":114,"context_line":"        LOG.debug(_(\"Deleting network %s\"), network_id)"},{"line_number":115,"context_line":"        # The network may not be defined on this agent"},{"line_number":116,"context_line":"        if network_id in self._network_vswitch_map:"},{"line_number":117,"context_line":"            self._reclaim_local_network(network_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsVk%3D","line":114,"in_reply_to":"AAAAM3%2F%2FseI%3D","updated":"2013-01-09 12:54:02.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":302,"context_line":"            resync_a \u003d self._treat_devices_added(port_info[\u0027added\u0027])"},{"line_number":303,"context_line":"        if \u0027removed\u0027 in port_info:"},{"line_number":304,"context_line":"            resync_b \u003d self._treat_devices_removed(port_info[\u0027removed\u0027])"},{"line_number":305,"context_line":"        # If one of the above opertaions fails \u003d\u003e resync with plugin"},{"line_number":306,"context_line":"        return (resync_a | resync_b)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def daemon_loop(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2FnVU%3D","line":305,"updated":"2013-01-13 14:42:41.000000000","message":"Typo - opertaions","commit_id":"b42a81e066f1c1f3c4ba30939d55090f1a107808"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":302,"context_line":"            resync_a \u003d self._treat_devices_added(port_info[\u0027added\u0027])"},{"line_number":303,"context_line":"        if \u0027removed\u0027 in port_info:"},{"line_number":304,"context_line":"            resync_b \u003d self._treat_devices_removed(port_info[\u0027removed\u0027])"},{"line_number":305,"context_line":"        # If one of the above opertaions fails \u003d\u003e resync with plugin"},{"line_number":306,"context_line":"        return (resync_a | resync_b)"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def daemon_loop(self):"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2FnR0%3D","line":305,"in_reply_to":"AAAAM3%2F%2FnVU%3D","updated":"2013-01-13 15:53:45.000000000","message":"Done","commit_id":"b42a81e066f1c1f3c4ba30939d55090f1a107808"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"def main():"},{"line_number":344,"context_line":"    eventlet.monkey_patch()"},{"line_number":345,"context_line":"    cfg.CONF(args\u003dsys.argv[1:], project\u003d\u0027quantum\u0027)"},{"line_number":346,"context_line":"    logging_config.setup_logging(cfg.CONF)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    plugin \u003d HyperVQuantumAgent()"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2FnVQ%3D","line":345,"updated":"2013-01-13 14:42:41.000000000","message":"This is the default value - you do not need to add args\u003dsys.argv[1:]","commit_id":"b42a81e066f1c1f3c4ba30939d55090f1a107808"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":342,"context_line":""},{"line_number":343,"context_line":"def main():"},{"line_number":344,"context_line":"    eventlet.monkey_patch()"},{"line_number":345,"context_line":"    cfg.CONF(args\u003dsys.argv[1:], project\u003d\u0027quantum\u0027)"},{"line_number":346,"context_line":"    logging_config.setup_logging(cfg.CONF)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"    plugin \u003d HyperVQuantumAgent()"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2FnRw%3D","line":345,"in_reply_to":"AAAAM3%2F%2FnVQ%3D","updated":"2013-01-13 15:53:45.000000000","message":"Done","commit_id":"b42a81e066f1c1f3c4ba30939d55090f1a107808"}],"quantum/plugins/hyperv/agent/utils.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Check needed for unit testing on Unix"},{"line_number":29,"context_line":"if sys.platform \u003d\u003d \u0027win32\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FweM%3D","line":29,"updated":"2013-01-07 14:20:00.000000000","message":"I think that this needs to be above the quantum imports\nIf the platform is not windows will this work? If not then I think that we need an exception or log messages","commit_id":"4adec17a911d84d6e4d7c8466a3612ecb3b26229"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Check needed for unit testing on Unix"},{"line_number":29,"context_line":"if sys.platform \u003d\u003d \u0027win32\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Fwbg%3D","line":29,"in_reply_to":"AAAAM3%2F%2FweM%3D","updated":"2013-01-07 14:35:09.000000000","message":"It will as unit tests are executed on Linux as well","commit_id":"4adec17a911d84d6e4d7c8466a3612ecb3b26229"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @property"},{"line_number":59,"context_line":"    def _conn(self):"},{"line_number":60,"context_line":"        if self.__conn is None:"},{"line_number":61,"context_line":"            self.__conn \u003d wmi.WMI(moniker\u003d\u0027//./root/virtualization\u0027)"},{"line_number":62,"context_line":"        return self.__conn"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvM8%3D","line":60,"updated":"2013-01-08 05:57:16.000000000","message":"Are you really wanting to use python name mangling magic here?\n\nConsider: self._wmi_conn","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @property"},{"line_number":59,"context_line":"    def _conn(self):"},{"line_number":60,"context_line":"        if self.__conn is None:"},{"line_number":61,"context_line":"            self.__conn \u003d wmi.WMI(moniker\u003d\u0027//./root/virtualization\u0027)"},{"line_number":62,"context_line":"        return self.__conn"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu7M%3D","line":60,"in_reply_to":"AAAAM3%2F%2FvM8%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":65,"context_line":"        vswitch \u003d self._get_vswitch(vswitch_name)"},{"line_number":66,"context_line":"        vswitch_ports \u003d vswitch.associators("},{"line_number":67,"context_line":"            wmi_result_class\u003d\u0027Msvm_SwitchPort\u0027)"},{"line_number":68,"context_line":"        return set([p.Name for p in vswitch_ports])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def vnic_port_exists(self, port_id):"},{"line_number":71,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvM0%3D","line":68,"updated":"2013-01-08 05:57:16.000000000","message":"No need to make a list first:\n\nreturn set(p.Name for p in vswitch_ports)","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":65,"context_line":"        vswitch \u003d self._get_vswitch(vswitch_name)"},{"line_number":66,"context_line":"        vswitch_ports \u003d vswitch.associators("},{"line_number":67,"context_line":"            wmi_result_class\u003d\u0027Msvm_SwitchPort\u0027)"},{"line_number":68,"context_line":"        return set([p.Name for p in vswitch_ports])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def vnic_port_exists(self, port_id):"},{"line_number":71,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu7I%3D","line":68,"in_reply_to":"AAAAM3%2F%2FvM0%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def vnic_port_exists(self, port_id):"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            self._get_vnic_settings(port_id)"},{"line_number":73,"context_line":"        except:"},{"line_number":74,"context_line":"            return False"},{"line_number":75,"context_line":"        return True"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvMw%3D","line":73,"updated":"2013-01-08 05:57:16.000000000","message":"You might want to catch specific exceptions here.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":70,"context_line":"    def vnic_port_exists(self, port_id):"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            self._get_vnic_settings(port_id)"},{"line_number":73,"context_line":"        except:"},{"line_number":74,"context_line":"            return False"},{"line_number":75,"context_line":"        return True"},{"line_number":76,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu7E%3D","line":73,"in_reply_to":"AAAAM3%2F%2FvMw%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def get_vnic_ids(self):"},{"line_number":78,"context_line":"        vnic_settings \u003d self._conn.Msvm_SyntheticEthernetPortSettingData()"},{"line_number":79,"context_line":"        return set([p.ElementName for p in vnic_settings])"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def _get_vnic_settings(self, vnic_name):"},{"line_number":82,"context_line":"        vnic_settings \u003d self._conn.Msvm_SyntheticEthernetPortSettingData("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvMs%3D","line":79,"updated":"2013-01-08 05:57:16.000000000","message":"return set(\n    p.ElementName \n    for p in self._conn.Msvm_SyntheticEthernetPortSettingData())","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":124,"context_line":"        job_wmi_path \u003d jobpath.replace(\u0027\\\\\u0027, \u0027/\u0027)"},{"line_number":125,"context_line":"        job \u003d wmi.WMI(moniker\u003djob_wmi_path)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        while job.JobState \u003d\u003d WMI_JOB_STATE_RUNNING:"},{"line_number":128,"context_line":"            time.sleep(0.1)"},{"line_number":129,"context_line":"            job \u003d wmi.WMI(moniker\u003djob_wmi_path)"},{"line_number":130,"context_line":"        if job.JobState !\u003d WMI_JOB_STATE_COMPLETED:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvMU%3D","line":127,"updated":"2013-01-08 05:57:16.000000000","message":"do you really want to stay in the loop forever if something gets stuck?","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        job_wmi_path \u003d jobpath.replace(\u0027\\\\\u0027, \u0027/\u0027)"},{"line_number":125,"context_line":"        job \u003d wmi.WMI(moniker\u003djob_wmi_path)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        while job.JobState \u003d\u003d WMI_JOB_STATE_RUNNING:"},{"line_number":128,"context_line":"            time.sleep(0.1)"},{"line_number":129,"context_line":"            job \u003d wmi.WMI(moniker\u003djob_wmi_path)"},{"line_number":130,"context_line":"        if job.JobState !\u003d WMI_JOB_STATE_COMPLETED:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu%2BE%3D","line":127,"in_reply_to":"AAAAM3%2F%2FvMU%3D","updated":"2013-01-08 09:32:52.000000000","message":"I\u0027d prefer to avoid an exit counter here, as exiting before could result in an untracked operation getting done while we exit with an exception. Beside that, an unlikely WMI operation getting stuck would mean way worse OS stability issues","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":133,"context_line":"                err_sum_desc \u003d job.ErrorSummaryDescription"},{"line_number":134,"context_line":"                err_desc \u003d job.ErrorDescription"},{"line_number":135,"context_line":"                err_code \u003d job.ErrorCode"},{"line_number":136,"context_line":"                raise HyperVException(_("},{"line_number":137,"context_line":"                    \"WMI job failed with status %(job_state)d. \""},{"line_number":138,"context_line":"                    \"Error details: %(err_sum_desc)s - %(err_desc)s - \""},{"line_number":139,"context_line":"                    \"Error code: %(err_code)d\") % locals())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvMQ%3D","line":136,"updated":"2013-01-08 05:57:16.000000000","message":"Consider moving this to next line that _( is seen.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                err_sum_desc \u003d job.ErrorSummaryDescription"},{"line_number":134,"context_line":"                err_desc \u003d job.ErrorDescription"},{"line_number":135,"context_line":"                err_code \u003d job.ErrorCode"},{"line_number":136,"context_line":"                raise HyperVException(_("},{"line_number":137,"context_line":"                    \"WMI job failed with status %(job_state)d. \""},{"line_number":138,"context_line":"                    \"Error details: %(err_sum_desc)s - %(err_desc)s - \""},{"line_number":139,"context_line":"                    \"Error code: %(err_code)d\") % locals())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu7A%3D","line":136,"in_reply_to":"AAAAM3%2F%2FvMQ%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":140,"context_line":"            else:"},{"line_number":141,"context_line":"                (error, ret_val) \u003d job.GetError()"},{"line_number":142,"context_line":"                if not ret_val and error:"},{"line_number":143,"context_line":"                    raise HyperVException(_("},{"line_number":144,"context_line":"                        \"WMI job failed with status %(job_state)d. \""},{"line_number":145,"context_line":"                        \"Error details: %(error)s\") % locals())"},{"line_number":146,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvMM%3D","line":143,"updated":"2013-01-08 05:57:16.000000000","message":"same as above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            else:"},{"line_number":141,"context_line":"                (error, ret_val) \u003d job.GetError()"},{"line_number":142,"context_line":"                if not ret_val and error:"},{"line_number":143,"context_line":"                    raise HyperVException(_("},{"line_number":144,"context_line":"                        \"WMI job failed with status %(job_state)d. \""},{"line_number":145,"context_line":"                        \"Error details: %(error)s\") % locals())"},{"line_number":146,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu6I%3D","line":143,"in_reply_to":"AAAAM3%2F%2FvMM%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":144,"context_line":"                        \"WMI job failed with status %(job_state)d. \""},{"line_number":145,"context_line":"                        \"Error details: %(error)s\") % locals())"},{"line_number":146,"context_line":"                else:"},{"line_number":147,"context_line":"                    raise HyperVException(_("},{"line_number":148,"context_line":"                        \"WMI job failed with status %(job_state)d. \""},{"line_number":149,"context_line":"                        \"No error description available\") % locals())"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvMI%3D","line":147,"updated":"2013-01-08 05:57:16.000000000","message":"same as above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":144,"context_line":"                        \"WMI job failed with status %(job_state)d. \""},{"line_number":145,"context_line":"                        \"Error details: %(error)s\") % locals())"},{"line_number":146,"context_line":"                else:"},{"line_number":147,"context_line":"                    raise HyperVException(_("},{"line_number":148,"context_line":"                        \"WMI job failed with status %(job_state)d. \""},{"line_number":149,"context_line":"                        \"No error description available\") % locals())"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu6E%3D","line":147,"in_reply_to":"AAAAM3%2F%2FvMI%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        desc \u003d job.Description"},{"line_number":152,"context_line":"        elap \u003d job.ElapsedTime"},{"line_number":153,"context_line":"        LOG.debug(_("},{"line_number":154,"context_line":"            \"WMI job succeeded: %(desc)s, Elapsed\u003d%(elap)s\") % locals())"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def _create_switch_port(self, vswitch_name, switch_port_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvME%3D","line":153,"updated":"2013-01-08 05:57:16.000000000","message":"same","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        desc \u003d job.Description"},{"line_number":152,"context_line":"        elap \u003d job.ElapsedTime"},{"line_number":153,"context_line":"        LOG.debug(_("},{"line_number":154,"context_line":"            \"WMI job succeeded: %(desc)s, Elapsed\u003d%(elap)s\") % locals())"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def _create_switch_port(self, vswitch_name, switch_port_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu6A%3D","line":153,"in_reply_to":"AAAAM3%2F%2FvME%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":173,"context_line":"        switch_svc \u003d self._conn.Msvm_VirtualSwitchManagementService()[0]"},{"line_number":174,"context_line":"        switch_port_path \u003d self._get_switch_port_path_by_name("},{"line_number":175,"context_line":"            switch_port_name)"},{"line_number":176,"context_line":"        (ret_val, ) \u003d switch_svc.DisconnectSwitchPort("},{"line_number":177,"context_line":"            SwitchPort\u003dswitch_port_path)"},{"line_number":178,"context_line":"        if ret_val !\u003d 0:"},{"line_number":179,"context_line":"            raise HyperVException(_("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvL4%3D","line":176,"updated":"2013-01-08 05:57:16.000000000","message":"Why are you wrapping ret_val here?","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        switch_svc \u003d self._conn.Msvm_VirtualSwitchManagementService()[0]"},{"line_number":174,"context_line":"        switch_port_path \u003d self._get_switch_port_path_by_name("},{"line_number":175,"context_line":"            switch_port_name)"},{"line_number":176,"context_line":"        (ret_val, ) \u003d switch_svc.DisconnectSwitchPort("},{"line_number":177,"context_line":"            SwitchPort\u003dswitch_port_path)"},{"line_number":178,"context_line":"        if ret_val !\u003d 0:"},{"line_number":179,"context_line":"            raise HyperVException(_("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu58%3D","line":176,"in_reply_to":"AAAAM3%2F%2FvL4%3D","updated":"2013-01-08 15:01:31.000000000","message":"I receive it wrapped from DisconnectSwitchPort, I\u0027m unwrapping it here","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":175,"context_line":"            switch_port_name)"},{"line_number":176,"context_line":"        (ret_val, ) \u003d switch_svc.DisconnectSwitchPort("},{"line_number":177,"context_line":"            SwitchPort\u003dswitch_port_path)"},{"line_number":178,"context_line":"        if ret_val !\u003d 0:"},{"line_number":179,"context_line":"            raise HyperVException(_("},{"line_number":180,"context_line":"                \u0027Failed to disconnect port %(switch_port_name)s \u0027"},{"line_number":181,"context_line":"                \u0027from switch %(vswitch_name)s \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvLs%3D","line":178,"updated":"2013-01-08 05:57:16.000000000","message":"if not ret_val:","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            switch_port_name)"},{"line_number":176,"context_line":"        (ret_val, ) \u003d switch_svc.DisconnectSwitchPort("},{"line_number":177,"context_line":"            SwitchPort\u003dswitch_port_path)"},{"line_number":178,"context_line":"        if ret_val !\u003d 0:"},{"line_number":179,"context_line":"            raise HyperVException(_("},{"line_number":180,"context_line":"                \u0027Failed to disconnect port %(switch_port_name)s \u0027"},{"line_number":181,"context_line":"                \u0027from switch %(vswitch_name)s \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu54%3D","line":178,"in_reply_to":"AAAAM3%2F%2FvLs%3D","updated":"2013-01-08 15:01:31.000000000","message":"you mean: if ret_val? (without \"not\")\n\nConsidering that ret_val is 0 in case of success, this is IMO more clear.\n\nThe following looks IMO misleading:\n\nif ret_val:\n  raise Exception(...)\n\nWhile the following brings more attention on the meaning of ret_value:\n\nif ret_val !\u003d 0:\n  raise Exception(...)\n\nJust my 2c of course...","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \u0027from switch %(vswitch_name)s \u0027"},{"line_number":182,"context_line":"                \u0027with error %(ret_val)s\u0027) % locals())"},{"line_number":183,"context_line":"        if delete_port:"},{"line_number":184,"context_line":"            (ret_val, ) \u003d switch_svc.DeleteSwitchPort("},{"line_number":185,"context_line":"                SwitchPort\u003dswitch_port_path)"},{"line_number":186,"context_line":"            if ret_val !\u003d 0:"},{"line_number":187,"context_line":"                raise HyperVException(_("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvLg%3D","line":184,"updated":"2013-01-08 05:57:16.000000000","message":"why are you wrapping ret_val?","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":181,"context_line":"                \u0027from switch %(vswitch_name)s \u0027"},{"line_number":182,"context_line":"                \u0027with error %(ret_val)s\u0027) % locals())"},{"line_number":183,"context_line":"        if delete_port:"},{"line_number":184,"context_line":"            (ret_val, ) \u003d switch_svc.DeleteSwitchPort("},{"line_number":185,"context_line":"                SwitchPort\u003dswitch_port_path)"},{"line_number":186,"context_line":"            if ret_val !\u003d 0:"},{"line_number":187,"context_line":"                raise HyperVException(_("}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu50%3D","line":184,"in_reply_to":"AAAAM3%2F%2FvLg%3D","updated":"2013-01-08 15:01:31.000000000","message":"same as above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":183,"context_line":"        if delete_port:"},{"line_number":184,"context_line":"            (ret_val, ) \u003d switch_svc.DeleteSwitchPort("},{"line_number":185,"context_line":"                SwitchPort\u003dswitch_port_path)"},{"line_number":186,"context_line":"            if ret_val !\u003d 0:"},{"line_number":187,"context_line":"                raise HyperVException(_("},{"line_number":188,"context_line":"                    \u0027Failed to delete port %(switch_port_name)s \u0027"},{"line_number":189,"context_line":"                    \u0027from switch %(vswitch_name)s \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvLY%3D","line":186,"updated":"2013-01-08 05:57:16.000000000","message":"if not ret_val:","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        if delete_port:"},{"line_number":184,"context_line":"            (ret_val, ) \u003d switch_svc.DeleteSwitchPort("},{"line_number":185,"context_line":"                SwitchPort\u003dswitch_port_path)"},{"line_number":186,"context_line":"            if ret_val !\u003d 0:"},{"line_number":187,"context_line":"                raise HyperVException(_("},{"line_number":188,"context_line":"                    \u0027Failed to delete port %(switch_port_name)s \u0027"},{"line_number":189,"context_line":"                    \u0027from switch %(vswitch_name)s \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu5w%3D","line":186,"in_reply_to":"AAAAM3%2F%2FvLY%3D","updated":"2013-01-08 15:01:31.000000000","message":"same as above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":224,"context_line":"                new_trunked_vlan_list +\u003d (vlan_id,)"},{"line_number":225,"context_line":"        elif action \u003d\u003d VLAN_ID_REMOVE:"},{"line_number":226,"context_line":"            if vlan_id in trunked_vlan_list:"},{"line_number":227,"context_line":"                new_trunked_vlan_list \u003d \\"},{"line_number":228,"context_line":"                    [v for v in trunked_vlan_list if v !\u003d vlan_id]"},{"line_number":229,"context_line":"        elif action \u003d\u003d SET_ACCESS_MODE:"},{"line_number":230,"context_line":"            mode \u003d ENDPOINT_MODE_ACCESS"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvLI%3D","line":227,"updated":"2013-01-08 05:57:16.000000000","message":"line continuations are not allowed according to Quantum\u0027s HACKING guidelines.\n\nnew_trunked_vlan_list \u003d [\n    v for v in trunked_vlan_list if v !\u003d vlan_id\n]","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                new_trunked_vlan_list +\u003d (vlan_id,)"},{"line_number":225,"context_line":"        elif action \u003d\u003d VLAN_ID_REMOVE:"},{"line_number":226,"context_line":"            if vlan_id in trunked_vlan_list:"},{"line_number":227,"context_line":"                new_trunked_vlan_list \u003d \\"},{"line_number":228,"context_line":"                    [v for v in trunked_vlan_list if v !\u003d vlan_id]"},{"line_number":229,"context_line":"        elif action \u003d\u003d SET_ACCESS_MODE:"},{"line_number":230,"context_line":"            mode \u003d ENDPOINT_MODE_ACCESS"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu5k%3D","line":227,"in_reply_to":"AAAAM3%2F%2FvLI%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    [v for v in trunked_vlan_list if v !\u003d vlan_id]"},{"line_number":229,"context_line":"        elif action \u003d\u003d SET_ACCESS_MODE:"},{"line_number":230,"context_line":"            mode \u003d ENDPOINT_MODE_ACCESS"},{"line_number":231,"context_line":"            new_trunked_vlan_list \u003d ()"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        if len(trunked_vlan_list) !\u003d len(new_trunked_vlan_list):"},{"line_number":234,"context_line":"            vlan_endpoint_settings.TrunkedVLANList \u003d new_trunked_vlan_list"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvLE%3D","line":231,"updated":"2013-01-08 05:57:16.000000000","message":"you\u0027re defaulting to a tuple not a list.\n\nnew_trunked_vlan_list \u003d []","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    [v for v in trunked_vlan_list if v !\u003d vlan_id]"},{"line_number":229,"context_line":"        elif action \u003d\u003d SET_ACCESS_MODE:"},{"line_number":230,"context_line":"            mode \u003d ENDPOINT_MODE_ACCESS"},{"line_number":231,"context_line":"            new_trunked_vlan_list \u003d ()"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        if len(trunked_vlan_list) !\u003d len(new_trunked_vlan_list):"},{"line_number":234,"context_line":"            vlan_endpoint_settings.TrunkedVLANList \u003d new_trunked_vlan_list"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu5Y%3D","line":231,"in_reply_to":"AAAAM3%2F%2FvLE%3D","updated":"2013-01-08 15:01:31.000000000","message":"The WMI wrappers returns a tuple, even if the original WMI is an array, which is why the name ends with the suffix \"_list\". This is dynamic code that the WMI wrapper generates.\n\nFor consistency it returns a tuple, except in the above case where it returns a list for performance reasons.\n\nI suggest to rename the variable, but I have no problems in changing it in case.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":263,"context_line":"            vlan_id, vswitch_name)"},{"line_number":264,"context_line":"        self._set_vswitch_external_port_vlan_id(vswitch_name, VLAN_ID_REMOVE)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    #def unset_vlan_id_of_switch_port(self, vland_id, switch_port_name):"},{"line_number":267,"context_line":"    #    self._set_vswitch_port_vlan_id(0, switch_port_name)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _get_switch_port_path_by_name(self, switch_port_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvLA%3D","line":266,"updated":"2013-01-08 05:57:16.000000000","message":"This should be removed","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":263,"context_line":"            vlan_id, vswitch_name)"},{"line_number":264,"context_line":"        self._set_vswitch_external_port_vlan_id(vswitch_name, VLAN_ID_REMOVE)"},{"line_number":265,"context_line":""},{"line_number":266,"context_line":"    #def unset_vlan_id_of_switch_port(self, vland_id, switch_port_name):"},{"line_number":267,"context_line":"    #    self._set_vswitch_port_vlan_id(0, switch_port_name)"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    def _get_switch_port_path_by_name(self, switch_port_name):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu40%3D","line":266,"in_reply_to":"AAAAM3%2F%2FvLA%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Check needed for unit testing on Unix"},{"line_number":29,"context_line":"if sys.platform \u003d\u003d \u0027win32\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d cfg.CONF"},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsgQ%3D","line":30,"updated":"2013-01-09 10:32:13.000000000","message":"do we need to add wmi to pip-requires?\n\nshould this be above the quantum includes?","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Check needed for unit testing on Unix"},{"line_number":29,"context_line":"if sys.platform \u003d\u003d \u0027win32\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d cfg.CONF"},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpwk%3D","line":30,"in_reply_to":"AAAAM3%2F%2FsQ4%3D","updated":"2013-01-11 00:23:30.000000000","message":"You mean \"import_module\"? In case looking at the code I don\u0027t see any conditional option, without the if it\u0027ll throw an exception if the module is not defined.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Check needed for unit testing on Unix"},{"line_number":29,"context_line":"if sys.platform \u003d\u003d \u0027win32\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d cfg.CONF"},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsQ4%3D","line":30,"in_reply_to":"AAAAM3%2F%2FsYU%3D","updated":"2013-01-09 15:59:37.000000000","message":"Nit: the convention for conditional imports is to use importutils.import_model in quantum.openstack.common","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Check needed for unit testing on Unix"},{"line_number":29,"context_line":"if sys.platform \u003d\u003d \u0027win32\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d cfg.CONF"},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsYU%3D","line":30,"in_reply_to":"AAAAM3%2F%2Fsdg%3D","updated":"2013-01-09 12:05:41.000000000","message":"if you look in setup.py (next linked patchset) you will find a conditional requirements","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"# Check needed for unit testing on Unix"},{"line_number":29,"context_line":"if sys.platform \u003d\u003d \u0027win32\u0027:"},{"line_number":30,"context_line":"    import wmi"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"CONF \u003d cfg.CONF"},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fsdg%3D","line":30,"in_reply_to":"AAAAM3%2F%2FsgQ%3D","updated":"2013-01-09 11:03:02.000000000","message":"I don\u0027t think so, pip-requires cannot differentiate the platform.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class HyperVException(q_exc.QuantumException):"},{"line_number":37,"context_line":"    def __init__(self, message\u003dNone):"},{"line_number":38,"context_line":"        self.message \u003d message"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsQo%3D","line":36,"updated":"2013-01-09 15:59:37.000000000","message":"Consider doing just:\n\nmessage \u003d _(\u0027HyperVException: %(error_message)s\u0027)\n\nAnd passing error_message to the contructor when raising this kind of exception.\n\nThis might save some code lines","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class HyperVException(q_exc.QuantumException):"},{"line_number":37,"context_line":"    def __init__(self, message\u003dNone):"},{"line_number":38,"context_line":"        self.message \u003d message"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpwg%3D","line":36,"in_reply_to":"AAAAM3%2F%2FsQo%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"ENDPOINT_MODE_ACCESS \u003d 2"},{"line_number":47,"context_line":"ENDPOINT_MODE_TRUNK \u003d 5"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"WMI_JOB_STATUS_STARTED \u003d 4096"},{"line_number":50,"context_line":"WMI_JOB_STATE_RUNNING \u003d 4"},{"line_number":51,"context_line":"WMI_JOB_STATE_COMPLETED \u003d 7"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsDM%3D","line":49,"updated":"2013-01-09 15:59:37.000000000","message":"Unused","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":46,"context_line":"ENDPOINT_MODE_ACCESS \u003d 2"},{"line_number":47,"context_line":"ENDPOINT_MODE_TRUNK \u003d 5"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"WMI_JOB_STATUS_STARTED \u003d 4096"},{"line_number":50,"context_line":"WMI_JOB_STATE_RUNNING \u003d 4"},{"line_number":51,"context_line":"WMI_JOB_STATE_COMPLETED \u003d 7"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpyo%3D","line":49,"in_reply_to":"AAAAM3%2F%2FsDM%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self._wmi_conn \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @property"},{"line_number":59,"context_line":"    def _conn(self):"},{"line_number":60,"context_line":"        if self._wmi_conn is None:"},{"line_number":61,"context_line":"            self._wmi_conn \u003d wmi.WMI(moniker\u003d\u0027//./root/virtualization\u0027)"},{"line_number":62,"context_line":"        return self._wmi_conn"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsQY%3D","line":59,"updated":"2013-01-09 15:59:37.000000000","message":"@property decorator is typycally used for publicly accessible attribute. This clashes a bit your prepended underscore.\n\nI understand you might have a reason for not initializing _wmi_conn in the constructor, so I\u0027m not making a strong point here. It\u0027s up to you if you deem something can be done around readability.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self._wmi_conn \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @property"},{"line_number":59,"context_line":"    def _conn(self):"},{"line_number":60,"context_line":"        if self._wmi_conn is None:"},{"line_number":61,"context_line":"            self._wmi_conn \u003d wmi.WMI(moniker\u003d\u0027//./root/virtualization\u0027)"},{"line_number":62,"context_line":"        return self._wmi_conn"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpM0%3D","line":59,"in_reply_to":"AAAAM3%2F%2Fpx8%3D","updated":"2013-01-11 10:30:49.000000000","message":"That\u0027s fine. Mine was just an optional comment.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self._wmi_conn \u003d None"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    @property"},{"line_number":59,"context_line":"    def _conn(self):"},{"line_number":60,"context_line":"        if self._wmi_conn is None:"},{"line_number":61,"context_line":"            self._wmi_conn \u003d wmi.WMI(moniker\u003d\u0027//./root/virtualization\u0027)"},{"line_number":62,"context_line":"        return self._wmi_conn"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpx8%3D","line":59,"in_reply_to":"AAAAM3%2F%2FsQY%3D","updated":"2013-01-11 00:23:30.000000000","message":"This syntax is used for lazy loading in this context, given that . It\u0027s a syntax used in other projects (Nova) where multiple WMI connection types are used, here it can be assigned in the constructor w/o problems.\nThe property encapsulation IMO provides more benefits then simple information hiding used in public members, for example by omitting a setter it becomes read only and a higher control on the variable can be applied. Note that I come from the C++ / C# world, so I still feel uncomfortable with a language that de facto doesn\u0027t have private class members :-)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def _get_vnic_settings(self, vnic_name):"},{"line_number":83,"context_line":"        vnic_settings \u003d self._conn.Msvm_SyntheticEthernetPortSettingData("},{"line_number":84,"context_line":"            ElementName\u003dvnic_name)"},{"line_number":85,"context_line":"        if not len(vnic_settings):"},{"line_number":86,"context_line":"            raise HyperVException(_(\u0027Vnic not found: %s\u0027) % vnic_name)"},{"line_number":87,"context_line":"        return vnic_settings[0]"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsQI%3D","line":85,"updated":"2013-01-09 15:59:37.000000000","message":"is there a chance Msvm_SyntheticEthernetPortSettingData might return None? If yes, add an explicit check","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    def _get_vnic_settings(self, vnic_name):"},{"line_number":83,"context_line":"        vnic_settings \u003d self._conn.Msvm_SyntheticEthernetPortSettingData("},{"line_number":84,"context_line":"            ElementName\u003dvnic_name)"},{"line_number":85,"context_line":"        if not len(vnic_settings):"},{"line_number":86,"context_line":"            raise HyperVException(_(\u0027Vnic not found: %s\u0027) % vnic_name)"},{"line_number":87,"context_line":"        return vnic_settings[0]"},{"line_number":88,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpz4%3D","line":85,"in_reply_to":"AAAAM3%2F%2FsQI%3D","updated":"2013-01-11 00:23:30.000000000","message":"No it returns a list with 0 elements in case","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":218,"context_line":"            wmi_association_class\u003d\u0027Msvm_NetworkElementSettingData\u0027)[0]"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        mode \u003d ENDPOINT_MODE_TRUNK"},{"line_number":221,"context_line":"        trunked_vlans \u003d vlan_endpoint_settings.TrunkedVLANList"},{"line_number":222,"context_line":"        if action \u003d\u003d VLAN_ID_ADD:"},{"line_number":223,"context_line":"            if vlan_id not in trunked_vlans:"},{"line_number":224,"context_line":"                new_trunked_vlans +\u003d (vlan_id,)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsDo%3D","line":221,"updated":"2013-01-09 15:59:37.000000000","message":"does this assignment copy the object?\nI\u0027m asking because you reassign it to TrunkedVLANList at line 235","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":218,"context_line":"            wmi_association_class\u003d\u0027Msvm_NetworkElementSettingData\u0027)[0]"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"        mode \u003d ENDPOINT_MODE_TRUNK"},{"line_number":221,"context_line":"        trunked_vlans \u003d vlan_endpoint_settings.TrunkedVLANList"},{"line_number":222,"context_line":"        if action \u003d\u003d VLAN_ID_ADD:"},{"line_number":223,"context_line":"            if vlan_id not in trunked_vlans:"},{"line_number":224,"context_line":"                new_trunked_vlans +\u003d (vlan_id,)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpzs%3D","line":221,"in_reply_to":"AAAAM3%2F%2FsDo%3D","updated":"2013-01-11 00:23:30.000000000","message":"The WMI wrappers use __setattr__ and __getattr__ to dynamically access the underlying COM object properties.\nSetting them requires an explicit assignment","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    v for v in trunked_vlans if v !\u003d vlan_id"},{"line_number":229,"context_line":"                ]"},{"line_number":230,"context_line":"        elif action \u003d\u003d SET_ACCESS_MODE:"},{"line_number":231,"context_line":"            mode \u003d ENDPOINT_MODE_ACCESS"},{"line_number":232,"context_line":"            new_trunked_vlans \u003d ()"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if len(trunked_vlans) !\u003d len(new_trunked_vlans):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsDc%3D","line":231,"updated":"2013-01-09 15:59:37.000000000","message":"why not assigning directly to vlan_endpoint.DesiredEndpointMode?","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                    v for v in trunked_vlans if v !\u003d vlan_id"},{"line_number":229,"context_line":"                ]"},{"line_number":230,"context_line":"        elif action \u003d\u003d SET_ACCESS_MODE:"},{"line_number":231,"context_line":"            mode \u003d ENDPOINT_MODE_ACCESS"},{"line_number":232,"context_line":"            new_trunked_vlans \u003d ()"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if len(trunked_vlans) !\u003d len(new_trunked_vlans):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpzo%3D","line":231,"in_reply_to":"AAAAM3%2F%2FsDc%3D","updated":"2013-01-11 00:23:30.000000000","message":"To avoid an additional WMI roundtrip (see line 238)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":121,"context_line":"        job \u003d wmi.WMI(moniker\u003djob_wmi_path)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        while job.JobState \u003d\u003d WMI_JOB_STATE_RUNNING:"},{"line_number":124,"context_line":"            time.sleep(0.1)"},{"line_number":125,"context_line":"            job \u003d wmi.WMI(moniker\u003djob_wmi_path)"},{"line_number":126,"context_line":"        if job.JobState !\u003d WMI_JOB_STATE_COMPLETED:"},{"line_number":127,"context_line":"            job_state \u003d job.JobState"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2FnaM%3D","line":124,"updated":"2013-01-13 10:28:05.000000000","message":"where do we import the time?","commit_id":"e6a47c8696aebc91da795eabefb43061952bfe68"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":216,"context_line":"        mode \u003d ENDPOINT_MODE_TRUNK"},{"line_number":217,"context_line":"        trunked_vlans \u003d vlan_endpoint_settings.TrunkedVLANList"},{"line_number":218,"context_line":"        if action \u003d\u003d VLAN_ID_ADD:"},{"line_number":219,"context_line":"            if vlan_id not in trunked_vlans:"},{"line_number":220,"context_line":"                new_trunked_vlans +\u003d (vlan_id,)"},{"line_number":221,"context_line":"        elif action \u003d\u003d VLAN_ID_REMOVE:"},{"line_number":222,"context_line":"            if vlan_id in trunked_vlans:"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2Fnac%3D","line":219,"updated":"2013-01-13 10:28:05.000000000","message":"where is vlan_id defined?","commit_id":"e6a47c8696aebc91da795eabefb43061952bfe68"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":244,"context_line":""},{"line_number":245,"context_line":"    def set_vswitch_mode_access(self, vswitch_name):"},{"line_number":246,"context_line":"        LOG.info(_(\u0027Setting vswitch %s in access mode (flat)\u0027),"},{"line_number":247,"context_line":"                 vlan_id, vswitch_name)"},{"line_number":248,"context_line":"        self._set_vswitch_external_port_vlan_id(vswitch_name, SET_ACCESS_MODE)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    def add_vlan_id_to_vswitch(self, vlan_id, vswitch_name):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAM3%2F%2FnaQ%3D","line":247,"updated":"2013-01-13 10:28:05.000000000","message":"where is the vlan_id defined?","commit_id":"e6a47c8696aebc91da795eabefb43061952bfe68"}],"quantum/plugins/hyperv/agent_notifier_api.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from quantum.openstack.common import rpc"},{"line_number":33,"context_line":"from quantum.openstack.common.rpc import proxy"},{"line_number":34,"context_line":"from quantum import policy"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNc%3D","line":35,"updated":"2013-01-06 18:34:38.000000000","message":"why the new line?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"}],"quantum/plugins/hyperv/common/constants.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 Cloudbase Solutions Srl"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNY%3D","line":1,"updated":"2013-01-06 18:34:38.000000000","message":"we should maybe try and have some common constants - these are common in a lot of plugins - not related to this patch :)","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 Cloudbase Solutions Srl"},{"line_number":4,"context_line":"# All Rights Reserved."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxLY%3D","line":1,"in_reply_to":"AAAAM3%2F%2FxNY%3D","updated":"2013-01-06 19:32:03.000000000","message":"I agree. Actually I wanted some changes here, like \u0027nvgre\u0027 instead of \u0027gre\u0027, but due to the Providernet extensions (see also Salvatore\u0027s comment: https://github.com/openstack/quantum/blob/master/quantum/extensions/providernet.py) I ended up keeping the same design as in OVS: \nhttps://github.com/openstack/quantum/blob/master/quantum/plugins/openvswitch/common/constants.py\nDo you suggest to remove those constants from all the plugins and put them in a common place?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"}],"quantum/plugins/hyperv/db.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from quantum.openstack.common import cfg"},{"line_number":25,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":26,"context_line":"from quantum.plugins.hyperv import model as hyperv_model"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"database_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNU%3D","line":27,"updated":"2013-01-06 18:34:38.000000000","message":"why the new line?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"database_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027sql_connection\u0027, default\u003d\u0027sqlite://\u0027),"},{"line_number":32,"context_line":"    cfg.IntOpt(\u0027sql_max_retries\u0027, default\u003d-1),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027reconnect_interval\u0027, default\u003d2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNQ%3D","line":30,"updated":"2013-01-06 18:34:38.000000000","message":"hopefully this ma not be relevant - https://review.openstack.org/#/c/19049/ (guess time will tell)","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"database_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027sql_connection\u0027, default\u003d\u0027sqlite://\u0027),"},{"line_number":32,"context_line":"    cfg.IntOpt(\u0027sql_max_retries\u0027, default\u003d-1),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027reconnect_interval\u0027, default\u003d2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxKE%3D","line":30,"in_reply_to":"AAAAM3%2F%2FxNQ%3D","updated":"2013-01-06 20:19:37.000000000","message":"Just noticed that it\u0027s still under review. If it\u0027s fine with you, I\u0027m going to issue a patch for this as soon as your patch gets merged. There\u0027s no problem in catting these lines and changing the configure_db() call at line 68","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"database_opts \u003d ["},{"line_number":31,"context_line":"    cfg.StrOpt(\u0027sql_connection\u0027, default\u003d\u0027sqlite://\u0027),"},{"line_number":32,"context_line":"    cfg.IntOpt(\u0027sql_max_retries\u0027, default\u003d-1),"},{"line_number":33,"context_line":"    cfg.IntOpt(\u0027reconnect_interval\u0027, default\u003d2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxLM%3D","line":30,"in_reply_to":"AAAAM3%2F%2FxNQ%3D","updated":"2013-01-06 19:32:03.000000000","message":"Sounds, good! Looks like this one got merged while I was working on it :-)","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                alloc.allocated \u003d True"},{"line_number":116,"context_line":"            except exc.NoResultFound:"},{"line_number":117,"context_line":"                raise q_exc.NoNetworkAvailable()"},{"line_number":118,"context_line":"                #LOG.debug(_(\"Reserving specific vlan %(vlan_id)s on physical \""},{"line_number":119,"context_line":"                #            \"network %(physical_network)s outside pool\"),"},{"line_number":120,"context_line":"                #          locals())"},{"line_number":121,"context_line":"                #alloc \u003d hyperv_model.VlanAllocation(physical_network, vlan_id)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNM%3D","line":118,"updated":"2013-01-06 18:34:38.000000000","message":"can you please remve these","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def reserve_flat_net(self, session):"},{"line_number":51,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":52,"context_line":"            alloc \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":53,"context_line":"                     filter_by(allocated\u003dFalse,"},{"line_number":54,"context_line":"                               vlan_id\u003dconstants.FLAT_VLAN_ID)."},{"line_number":55,"context_line":"                     first())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvK8%3D","line":52,"updated":"2013-01-08 05:57:16.000000000","message":"Trailing dots get lost, consider:\n\nalloc_q \u003d session.query(hyperv_model.VlanAllocation)\n\nalloc_q \u003d alloc_q.filter_by(allocated\u003dFalse, vlan_id\u003dconstants.FLAT_VLAN_ID)\n\nalloc \u003d alloc_q.first()","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def reserve_flat_net(self, session):"},{"line_number":51,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":52,"context_line":"            alloc \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":53,"context_line":"                     filter_by(allocated\u003dFalse,"},{"line_number":54,"context_line":"                               vlan_id\u003dconstants.FLAT_VLAN_ID)."},{"line_number":55,"context_line":"                     first())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu4k%3D","line":52,"in_reply_to":"AAAAM3%2F%2FvK8%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def get_network_binding(self, session, network_id):"},{"line_number":107,"context_line":"        session \u003d session or db_api.get_session()"},{"line_number":108,"context_line":"        try:"},{"line_number":109,"context_line":"            binding \u003d (session.query(hyperv_model.NetworkBinding)."},{"line_number":110,"context_line":"                       filter_by(network_id\u003dnetwork_id)."},{"line_number":111,"context_line":"                       one())"},{"line_number":112,"context_line":"            return binding"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvK0%3D","line":109,"updated":"2013-01-08 05:57:16.000000000","message":"binding_q \u003d session.query(hyperv_model.NetworkBinding).filter_by(\n    network_id\u003dnetwork_id)\nreturn binding_q.one()","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":106,"context_line":"    def get_network_binding(self, session, network_id):"},{"line_number":107,"context_line":"        session \u003d session or db_api.get_session()"},{"line_number":108,"context_line":"        try:"},{"line_number":109,"context_line":"            binding \u003d (session.query(hyperv_model.NetworkBinding)."},{"line_number":110,"context_line":"                       filter_by(network_id\u003dnetwork_id)."},{"line_number":111,"context_line":"                       one())"},{"line_number":112,"context_line":"            return binding"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu4c%3D","line":109,"in_reply_to":"AAAAM3%2F%2FvK0%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def release_vlan(self, session, physical_network, vlan_id):"},{"line_number":127,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":128,"context_line":"            try:"},{"line_number":129,"context_line":"                alloc \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":130,"context_line":"                         filter_by(physical_network\u003dphysical_network,"},{"line_number":131,"context_line":"                                   vlan_id\u003dvlan_id)."},{"line_number":132,"context_line":"                         one())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvKw%3D","line":129,"updated":"2013-01-08 05:57:16.000000000","message":"please reformat similar to above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    def release_vlan(self, session, physical_network, vlan_id):"},{"line_number":127,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":128,"context_line":"            try:"},{"line_number":129,"context_line":"                alloc \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":130,"context_line":"                         filter_by(physical_network\u003dphysical_network,"},{"line_number":131,"context_line":"                                   vlan_id\u003dvlan_id)."},{"line_number":132,"context_line":"                         one())"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu4U%3D","line":129,"in_reply_to":"AAAAM3%2F%2FvKw%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":140,"context_line":"                              \"%(physical_network)s not found\"),"},{"line_number":141,"context_line":"                            locals())"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def sync_vlan_allocations(self, network_vlan_ranges):"},{"line_number":144,"context_line":"        \"\"\"Synchronize vlan_allocations table with configured VLAN ranges\"\"\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        session \u003d db_api.get_session()"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvKE%3D","line":143,"updated":"2013-01-08 05:57:16.000000000","message":"This method has seven for loops and should be refactored into coherent parts.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":147,"context_line":"        with session.begin():"},{"line_number":148,"context_line":"            # get existing allocations for all physical networks"},{"line_number":149,"context_line":"            allocations \u003d dict()"},{"line_number":150,"context_line":"            allocs \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":151,"context_line":"                      all())"},{"line_number":152,"context_line":"            for alloc in allocs:"},{"line_number":153,"context_line":"                if alloc.physical_network not in allocations:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvKo%3D","line":150,"updated":"2013-01-08 05:57:16.000000000","message":"allocs_q \u003d session.query(hyperv_model.VlanAllocation)\n\nfor alloc in allocs_q.all():","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        with session.begin():"},{"line_number":148,"context_line":"            # get existing allocations for all physical networks"},{"line_number":149,"context_line":"            allocations \u003d dict()"},{"line_number":150,"context_line":"            allocs \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":151,"context_line":"                      all())"},{"line_number":152,"context_line":"            for alloc in allocs:"},{"line_number":153,"context_line":"                if alloc.physical_network not in allocations:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu4M%3D","line":150,"in_reply_to":"AAAAM3%2F%2FvKo%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":150,"context_line":"            allocs \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":151,"context_line":"                      all())"},{"line_number":152,"context_line":"            for alloc in allocs:"},{"line_number":153,"context_line":"                if alloc.physical_network not in allocations:"},{"line_number":154,"context_line":"                    allocations[alloc.physical_network] \u003d set()"},{"line_number":155,"context_line":"                allocations[alloc.physical_network].add(alloc)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvKc%3D","line":153,"updated":"2013-01-08 05:57:16.000000000","message":"replace 153-155\n\nallocations.setdefault(alloc.physical_network, set().add(alloc)","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            allocs \u003d (session.query(hyperv_model.VlanAllocation)."},{"line_number":151,"context_line":"                      all())"},{"line_number":152,"context_line":"            for alloc in allocs:"},{"line_number":153,"context_line":"                if alloc.physical_network not in allocations:"},{"line_number":154,"context_line":"                    allocations[alloc.physical_network] \u003d set()"},{"line_number":155,"context_line":"                allocations[alloc.physical_network].add(alloc)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu30%3D","line":153,"in_reply_to":"AAAAM3%2F%2FvKc%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":155,"context_line":"                allocations[alloc.physical_network].add(alloc)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            # process vlan ranges for each configured physical network"},{"line_number":158,"context_line":"            for physical_network, vlan_ranges in \\"},{"line_number":159,"context_line":"                    network_vlan_ranges.iteritems():"},{"line_number":160,"context_line":"                # determine current configured allocatable vlans for this"},{"line_number":161,"context_line":"                # physical network"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvKA%3D","line":158,"updated":"2013-01-08 05:57:16.000000000","message":"line continuations are not allowed per HACKING guidelines","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                allocations[alloc.physical_network].add(alloc)"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"            # process vlan ranges for each configured physical network"},{"line_number":158,"context_line":"            for physical_network, vlan_ranges in \\"},{"line_number":159,"context_line":"                    network_vlan_ranges.iteritems():"},{"line_number":160,"context_line":"                # determine current configured allocatable vlans for this"},{"line_number":161,"context_line":"                # physical network"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu3o%3D","line":158,"in_reply_to":"AAAAM3%2F%2FvKA%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":161,"context_line":"                # physical network"},{"line_number":162,"context_line":"                vlan_ids \u003d set()"},{"line_number":163,"context_line":"                for vlan_range in vlan_ranges:"},{"line_number":164,"context_line":"                    vlan_ids |\u003d set(xrange(vlan_range[0], vlan_range[1] + 1))"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"                # remove from table unallocated vlans not currently allocatable"},{"line_number":167,"context_line":"                if physical_network in allocations:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvJ4%3D","line":164,"updated":"2013-01-08 05:57:16.000000000","message":"Is there not a more way to build this?","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                # physical network"},{"line_number":162,"context_line":"                vlan_ids \u003d set()"},{"line_number":163,"context_line":"                for vlan_range in vlan_ranges:"},{"line_number":164,"context_line":"                    vlan_ids |\u003d set(xrange(vlan_range[0], vlan_range[1] + 1))"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"                # remove from table unallocated vlans not currently allocatable"},{"line_number":167,"context_line":"                if physical_network in allocations:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu90%3D","line":164,"in_reply_to":"AAAAM3%2F%2FvJ4%3D","updated":"2013-01-08 09:32:52.000000000","message":"Like many other areas, this line comes from the OVS plugin and was left like this for consistency, but it can be replaced of course.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":"            if alloc:"},{"line_number":42,"context_line":"                LOG.debug(_(\"Reserving vlan %(vlan_id)s on physical network \""},{"line_number":43,"context_line":"                            \"%(physical_network)s from pool\"),"},{"line_number":44,"context_line":"                          {\u0027vlan_id\u0027: alloc.vlan_id,"},{"line_number":45,"context_line":"                           \u0027physical_network\u0027: alloc.physical_network})"},{"line_number":46,"context_line":"                alloc.allocated \u003d True"},{"line_number":47,"context_line":"                return (alloc.physical_network, alloc.vlan_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fr%2Fc%3D","line":44,"updated":"2013-01-09 15:59:37.000000000","message":"perhaps you can just pass alloc object to the LOG.debug call","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":"            if alloc:"},{"line_number":42,"context_line":"                LOG.debug(_(\"Reserving vlan %(vlan_id)s on physical network \""},{"line_number":43,"context_line":"                            \"%(physical_network)s from pool\"),"},{"line_number":44,"context_line":"                          {\u0027vlan_id\u0027: alloc.vlan_id,"},{"line_number":45,"context_line":"                           \u0027physical_network\u0027: alloc.physical_network})"},{"line_number":46,"context_line":"                alloc.allocated \u003d True"},{"line_number":47,"context_line":"                return (alloc.physical_network, alloc.vlan_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpMo%3D","line":44,"in_reply_to":"AAAAM3%2F%2FpmE%3D","updated":"2013-01-11 10:30:49.000000000","message":"That\u0027s weird, but don\u0027t bother.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            if alloc:"},{"line_number":42,"context_line":"                LOG.debug(_(\"Reserving vlan %(vlan_id)s on physical network \""},{"line_number":43,"context_line":"                            \"%(physical_network)s from pool\"),"},{"line_number":44,"context_line":"                          {\u0027vlan_id\u0027: alloc.vlan_id,"},{"line_number":45,"context_line":"                           \u0027physical_network\u0027: alloc.physical_network})"},{"line_number":46,"context_line":"                alloc.allocated \u003d True"},{"line_number":47,"context_line":"                return (alloc.physical_network, alloc.vlan_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpmE%3D","line":44,"in_reply_to":"AAAAM3%2F%2FpwY%3D","updated":"2013-01-11 00:49:36.000000000","message":"Unfortunately alloc is not a mapping","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            if alloc:"},{"line_number":42,"context_line":"                LOG.debug(_(\"Reserving vlan %(vlan_id)s on physical network \""},{"line_number":43,"context_line":"                            \"%(physical_network)s from pool\"),"},{"line_number":44,"context_line":"                          {\u0027vlan_id\u0027: alloc.vlan_id,"},{"line_number":45,"context_line":"                           \u0027physical_network\u0027: alloc.physical_network})"},{"line_number":46,"context_line":"                alloc.allocated \u003d True"},{"line_number":47,"context_line":"                return (alloc.physical_network, alloc.vlan_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpwY%3D","line":44,"in_reply_to":"AAAAM3%2F%2Fr%2Fc%3D","updated":"2013-01-11 00:23:30.000000000","message":"I\u0027m going to check this.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":56,"context_line":"            if alloc:"},{"line_number":57,"context_line":"                LOG.debug(_(\"Reserving flat physical network \""},{"line_number":58,"context_line":"                            \"%(physical_network)s from pool\"),"},{"line_number":59,"context_line":"                          {\u0027physical_network\u0027: alloc.physical_network})"},{"line_number":60,"context_line":"                alloc.allocated \u003d True"},{"line_number":61,"context_line":"                return alloc.physical_network"},{"line_number":62,"context_line":"        raise q_exc.NoNetworkAvailable()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fr%2FY%3D","line":59,"updated":"2013-01-09 15:59:37.000000000","message":"same as above","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            if alloc:"},{"line_number":57,"context_line":"                LOG.debug(_(\"Reserving flat physical network \""},{"line_number":58,"context_line":"                            \"%(physical_network)s from pool\"),"},{"line_number":59,"context_line":"                          {\u0027physical_network\u0027: alloc.physical_network})"},{"line_number":60,"context_line":"                alloc.allocated \u003d True"},{"line_number":61,"context_line":"                return alloc.physical_network"},{"line_number":62,"context_line":"        raise q_exc.NoNetworkAvailable()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpwU%3D","line":59,"in_reply_to":"AAAAM3%2F%2Fr%2FY%3D","updated":"2013-01-11 00:23:30.000000000","message":"idem","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                segmentation_id)"},{"line_number":98,"context_line":"            session.add(binding)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_port(self, port_id):"},{"line_number":101,"context_line":"        session \u003d db_api.get_session()"},{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            port \u003d session.query(models_v2.Port).filter_by(id\u003dport_id).one()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpwI%3D","line":100,"updated":"2013-01-11 00:23:30.000000000","message":"In rpc_callbacks.py. The session is initialized in the method.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":97,"context_line":"                segmentation_id)"},{"line_number":98,"context_line":"            session.add(binding)"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_port(self, port_id):"},{"line_number":101,"context_line":"        session \u003d db_api.get_session()"},{"line_number":102,"context_line":"        try:"},{"line_number":103,"context_line":"            port \u003d session.query(models_v2.Port).filter_by(id\u003dport_id).one()"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fr%2BU%3D","line":100,"updated":"2013-01-09 15:59:37.000000000","message":"Where is this method called?\nAlso - why don\u0027t we have a session parameter?","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":144,"context_line":"    def _add_missing_allocatable_vlans(self, session, vlan_ids):"},{"line_number":145,"context_line":"        for vlan_id in sorted(vlan_ids):"},{"line_number":146,"context_line":"            alloc \u003d hyperv_model.VlanAllocation("},{"line_number":147,"context_line":"                physical_network, vlan_id)"},{"line_number":148,"context_line":"            session.add(alloc)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _remove_non_allocatable_vlans(self, session,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAM3%2F%2Fn%2FM%3D","line":147,"updated":"2013-01-12 03:20:05.000000000","message":"where does physical_network come from?","commit_id":"fdf785b86fba6c18b01f2d55335d7e40d0beed49"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    def _add_missing_allocatable_vlans(self, session, vlan_ids):"},{"line_number":145,"context_line":"        for vlan_id in sorted(vlan_ids):"},{"line_number":146,"context_line":"            alloc \u003d hyperv_model.VlanAllocation("},{"line_number":147,"context_line":"                physical_network, vlan_id)"},{"line_number":148,"context_line":"            session.add(alloc)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def _remove_non_allocatable_vlans(self, session,"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAM3%2F%2Fn5A%3D","line":147,"in_reply_to":"AAAAM3%2F%2Fn%2FM%3D","updated":"2013-01-12 07:45:37.000000000","message":"Done","commit_id":"fdf785b86fba6c18b01f2d55335d7e40d0beed49"}],"quantum/plugins/hyperv/hyperv_quantum_plugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from quantum.openstack.common import rpc"},{"line_number":35,"context_line":"from quantum.openstack.common.rpc import proxy"},{"line_number":36,"context_line":"from quantum import policy"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from quantum.plugins.hyperv import db as hyperv_db"},{"line_number":39,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":40,"context_line":"from quantum.plugins.hyperv import rpc_callbacks"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNI%3D","line":37,"updated":"2013-01-06 18:34:38.000000000","message":"why new line?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":46,"context_line":"hyperv_opts \u003d ["},{"line_number":47,"context_line":"    cfg.BoolOpt(\u0027enable_tunneling\u0027, default\u003dFalse),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027tenant_network_type\u0027, default\u003d\u0027local\u0027,"},{"line_number":49,"context_line":"               help\u003d\"Network type for tenant networks \""},{"line_number":50,"context_line":"               \"(local, flat, vlan, gre, or none)\"),"},{"line_number":51,"context_line":"    cfg.ListOpt(\u0027network_vlan_ranges\u0027,"},{"line_number":52,"context_line":"                default\u003dDEFAULT_VLAN_RANGES,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNE%3D","line":49,"updated":"2013-01-06 18:34:38.000000000","message":"please i18n support","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":50,"context_line":"               \"(local, flat, vlan, gre, or none)\"),"},{"line_number":51,"context_line":"    cfg.ListOpt(\u0027network_vlan_ranges\u0027,"},{"line_number":52,"context_line":"                default\u003dDEFAULT_VLAN_RANGES,"},{"line_number":53,"context_line":"                help\u003d\"List of \u003cphysical_network\u003e:\u003cvlan_min\u003e:\u003cvlan_max\u003e \""},{"line_number":54,"context_line":"                \"or \u003cphysical_network\u003e\"),"},{"line_number":55,"context_line":"]"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxNA%3D","line":53,"updated":"2013-01-06 18:34:38.000000000","message":"ditto","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        return False"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    def _create_network_providers_map(self):"},{"line_number":247,"context_line":"        d \u003d {}"},{"line_number":248,"context_line":"        d[constants.TYPE_LOCAL] \u003d LocalNetworkProvider()"},{"line_number":249,"context_line":"        d[constants.TYPE_FLAT] \u003d FlatNetworkProvider()"},{"line_number":250,"context_line":"        d[constants.TYPE_VLAN] \u003d VlanNetworkProvider()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxM8%3D","line":247,"updated":"2013-01-06 18:34:38.000000000","message":"consider:\nd{constants.TYPE_LOCAL]: LocalNetworkProvider(),\n   constants.TYPE_FLAT]: FlatNetworkProvider(), ...}","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":33,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":34,"context_line":"from quantum.openstack.common import rpc"},{"line_number":35,"context_line":"from quantum.openstack.common.rpc import proxy"},{"line_number":36,"context_line":"from quantum.plugins.hyperv import db as hyperv_db"},{"line_number":37,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":38,"context_line":"from quantum.plugins.hyperv import rpc_callbacks"},{"line_number":39,"context_line":"from quantum.plugins.hyperv import agent_notifier_api"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsC8%3D","line":36,"updated":"2013-01-09 15:59:37.000000000","message":"pls double check import order. Line 36 and 37 are probably inverted","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":34,"context_line":"from quantum.openstack.common import rpc"},{"line_number":35,"context_line":"from quantum.openstack.common.rpc import proxy"},{"line_number":36,"context_line":"from quantum.plugins.hyperv import db as hyperv_db"},{"line_number":37,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":38,"context_line":"from quantum.plugins.hyperv import rpc_callbacks"},{"line_number":39,"context_line":"from quantum.plugins.hyperv import agent_notifier_api"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpwE%3D","line":36,"in_reply_to":"AAAAM3%2F%2FsC8%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":36,"context_line":"from quantum.plugins.hyperv import db as hyperv_db"},{"line_number":37,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":38,"context_line":"from quantum.plugins.hyperv import rpc_callbacks"},{"line_number":39,"context_line":"from quantum.plugins.hyperv import agent_notifier_api"},{"line_number":40,"context_line":"from quantum import policy"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"DEFAULT_VLAN_RANGES \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsCw%3D","line":39,"updated":"2013-01-09 15:59:37.000000000","message":"check import order lines 38-39","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from quantum.plugins.hyperv import db as hyperv_db"},{"line_number":37,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":38,"context_line":"from quantum.plugins.hyperv import rpc_callbacks"},{"line_number":39,"context_line":"from quantum.plugins.hyperv import agent_notifier_api"},{"line_number":40,"context_line":"from quantum import policy"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"DEFAULT_VLAN_RANGES \u003d []"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpwA%3D","line":39,"in_reply_to":"AAAAM3%2F%2FsCw%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done. \n\nQuestion: Nova includes this check in tox. Do you think is possible to add it here as well?","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.BoolOpt(\u0027enable_tunneling\u0027, default\u003dFalse),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027tenant_network_type\u0027, default\u003d\u0027local\u0027,"},{"line_number":48,"context_line":"               help\u003d_(\"Network type for tenant networks \""},{"line_number":49,"context_line":"               \"(local, flat, vlan, gre, or none)\")),"},{"line_number":50,"context_line":"    cfg.ListOpt(\u0027network_vlan_ranges\u0027,"},{"line_number":51,"context_line":"                default\u003dDEFAULT_VLAN_RANGES,"},{"line_number":52,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cvlan_min\u003e:\u003cvlan_max\u003e \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsDA%3D","line":49,"updated":"2013-01-09 15:59:37.000000000","message":"Probably you might want to add a #TODO saying that GRE support will be added with a subsequent patch","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    cfg.BoolOpt(\u0027enable_tunneling\u0027, default\u003dFalse),"},{"line_number":47,"context_line":"    cfg.StrOpt(\u0027tenant_network_type\u0027, default\u003d\u0027local\u0027,"},{"line_number":48,"context_line":"               help\u003d_(\"Network type for tenant networks \""},{"line_number":49,"context_line":"               \"(local, flat, vlan, gre, or none)\")),"},{"line_number":50,"context_line":"    cfg.ListOpt(\u0027network_vlan_ranges\u0027,"},{"line_number":51,"context_line":"                default\u003dDEFAULT_VLAN_RANGES,"},{"line_number":52,"context_line":"                help\u003d_(\"List of \u003cphysical_network\u003e:\u003cvlan_min\u003e:\u003cvlan_max\u003e \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpv8%3D","line":49,"in_reply_to":"AAAAM3%2F%2FsDA%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":58,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class BaseNetworkProvider(object):"},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":"        self._db \u003d hyperv_db.HyperVPluginDB()"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsCo%3D","line":61,"updated":"2013-01-09 15:59:37.000000000","message":"consider using abc for defining an abstract class.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":58,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"class BaseNetworkProvider(object):"},{"line_number":62,"context_line":"    def __init__(self):"},{"line_number":63,"context_line":"        self._db \u003d hyperv_db.HyperVPluginDB()"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpvs%3D","line":61,"in_reply_to":"AAAAM3%2F%2FsCo%3D","updated":"2013-01-11 00:23:30.000000000","message":"In this case all the methods empty implementations are needed, they are not \"pure virtual\" (is there a Python equivalent therminology?)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def delete_network(self, session, binding):"},{"line_number":69,"context_line":"        pass"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def extend_network_dict(self, network, binding):"},{"line_number":72,"context_line":"        pass"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsCc%3D","line":71,"updated":"2013-01-09 15:59:37.000000000","message":"it seems network is never used.\nAlso overrides in derived classes don\u0027t really have distinct behaviour. If you call extend_network_dict for a flat network SEGMENTATION_ID is already set to None in the binding object","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def delete_network(self, session, binding):"},{"line_number":69,"context_line":"        pass"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def extend_network_dict(self, network, binding):"},{"line_number":72,"context_line":"        pass"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpns%3D","line":71,"in_reply_to":"AAAAM3%2F%2FsCc%3D","updated":"2013-01-11 00:49:36.000000000","message":"Both network and binding are used","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    def delete_network(self, session, binding):"},{"line_number":69,"context_line":"        pass"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def extend_network_dict(self, network, binding):"},{"line_number":72,"context_line":"        pass"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpvo%3D","line":71,"in_reply_to":"AAAAM3%2F%2FsCc%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":102,"context_line":"            msg \u003d _(\"segmentation_id specified \""},{"line_number":103,"context_line":"                    \"for %s network\") % network_type"},{"line_number":104,"context_line":"            raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":105,"context_line":"        segmentation_id \u003d constants.FLAT_VLAN_ID"},{"line_number":106,"context_line":"        attrs[provider.SEGMENTATION_ID] \u003d segmentation_id"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        physical_network \u003d attrs.get(provider.PHYSICAL_NETWORK)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsCg%3D","line":105,"updated":"2013-01-09 15:59:37.000000000","message":"you have some boilerplate code which can be moved into a utility method in the base class","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":102,"context_line":"            msg \u003d _(\"segmentation_id specified \""},{"line_number":103,"context_line":"                    \"for %s network\") % network_type"},{"line_number":104,"context_line":"            raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":105,"context_line":"        segmentation_id \u003d constants.FLAT_VLAN_ID"},{"line_number":106,"context_line":"        attrs[provider.SEGMENTATION_ID] \u003d segmentation_id"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        physical_network \u003d attrs.get(provider.PHYSICAL_NETWORK)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpMc%3D","line":105,"in_reply_to":"AAAAM3%2F%2Fpmk%3D","updated":"2013-01-11 10:30:49.000000000","message":"No worries. It\u0027s just that I am a pedant guy.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            msg \u003d _(\"segmentation_id specified \""},{"line_number":103,"context_line":"                    \"for %s network\") % network_type"},{"line_number":104,"context_line":"            raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":105,"context_line":"        segmentation_id \u003d constants.FLAT_VLAN_ID"},{"line_number":106,"context_line":"        attrs[provider.SEGMENTATION_ID] \u003d segmentation_id"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        physical_network \u003d attrs.get(provider.PHYSICAL_NETWORK)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpvg%3D","line":105,"in_reply_to":"AAAAM3%2F%2FsCg%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            msg \u003d _(\"segmentation_id specified \""},{"line_number":103,"context_line":"                    \"for %s network\") % network_type"},{"line_number":104,"context_line":"            raise q_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":105,"context_line":"        segmentation_id \u003d constants.FLAT_VLAN_ID"},{"line_number":106,"context_line":"        attrs[provider.SEGMENTATION_ID] \u003d segmentation_id"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"        physical_network \u003d attrs.get(provider.PHYSICAL_NETWORK)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpmk%3D","line":105,"in_reply_to":"AAAAM3%2F%2FsCg%3D","updated":"2013-01-11 00:49:36.000000000","message":"There are only 7 lines of code between Local and Flat that are shared, while in Vlan they differ. IMO it\u0027s not worth, but np to do it if you prefer so :)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":132,"context_line":"            self._db.reserve_specific_vlan(session, physical_network,"},{"line_number":133,"context_line":"                                           segmentation_id)"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            (physical_network, segmentation_id) \u003d \\"},{"line_number":136,"context_line":"                self._db.reserve_vlan(session)"},{"line_number":137,"context_line":"            attrs[provider.SEGMENTATION_ID] \u003d segmentation_id"},{"line_number":138,"context_line":"            attrs[provider.PHYSICAL_NETWORK] \u003d physical_network"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsbI%3D","line":135,"updated":"2013-01-09 11:43:24.000000000","message":"use \u0027(\u0027 \u0027)\u0027 to help line wrap.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":132,"context_line":"            self._db.reserve_specific_vlan(session, physical_network,"},{"line_number":133,"context_line":"                                           segmentation_id)"},{"line_number":134,"context_line":"        else:"},{"line_number":135,"context_line":"            (physical_network, segmentation_id) \u003d \\"},{"line_number":136,"context_line":"                self._db.reserve_vlan(session)"},{"line_number":137,"context_line":"            attrs[provider.SEGMENTATION_ID] \u003d segmentation_id"},{"line_number":138,"context_line":"            attrs[provider.PHYSICAL_NETWORK] \u003d physical_network"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2Fpvc%3D","line":135,"in_reply_to":"AAAAM3%2F%2FsbI%3D","updated":"2013-01-11 00:23:30.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":154,"context_line":"    # bulk operations. Name mangling is used in order to ensure it"},{"line_number":155,"context_line":"    # is qualified by class"},{"line_number":156,"context_line":"    __native_bulk_support \u003d True"},{"line_number":157,"context_line":"    supported_extension_aliases \u003d [\"provider\", \"router\", \"binding\"]"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    network_view \u003d \"extension:provider_network:view\""},{"line_number":160,"context_line":"    network_set \u003d \"extension:provider_network:set\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsbQ%3D","line":157,"updated":"2013-01-09 11:43:24.000000000","message":"don\u0027t like quota?","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    # bulk operations. Name mangling is used in order to ensure it"},{"line_number":155,"context_line":"    # is qualified by class"},{"line_number":156,"context_line":"    __native_bulk_support \u003d True"},{"line_number":157,"context_line":"    supported_extension_aliases \u003d [\"provider\", \"router\", \"binding\"]"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    network_view \u003d \"extension:provider_network:view\""},{"line_number":160,"context_line":"    network_set \u003d \"extension:provider_network:set\""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsWg%3D","line":157,"in_reply_to":"AAAAM3%2F%2FsbQ%3D","updated":"2013-01-09 12:54:02.000000000","message":"Other plugins including the OVS and LinuxBridge are defined w/o quotas as well.\nIs there a reason for that?","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if tenant_network_type not in [constants.TYPE_LOCAL,"},{"line_number":181,"context_line":"                                       constants.TYPE_FLAT,"},{"line_number":182,"context_line":"                                       constants.TYPE_VLAN,"},{"line_number":183,"context_line":"                                       constants.TYPE_NVGRE,"},{"line_number":184,"context_line":"                                       constants.TYPE_NONE]:"},{"line_number":185,"context_line":"            msg \u003d _("},{"line_number":186,"context_line":"                \"Invalid tenant_network_type: %(tenant_network_type)s. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsZs%3D","line":183,"updated":"2013-01-09 11:43:24.000000000","message":"I don\u0027t think your are supporting this type in this patch, so u can leave it in later patch.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if tenant_network_type not in [constants.TYPE_LOCAL,"},{"line_number":181,"context_line":"                                       constants.TYPE_FLAT,"},{"line_number":182,"context_line":"                                       constants.TYPE_VLAN,"},{"line_number":183,"context_line":"                                       constants.TYPE_NVGRE,"},{"line_number":184,"context_line":"                                       constants.TYPE_NONE]:"},{"line_number":185,"context_line":"            msg \u003d _("},{"line_number":186,"context_line":"                \"Invalid tenant_network_type: %(tenant_network_type)s. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpMY%3D","line":183,"in_reply_to":"AAAAM3%2F%2FpvQ%3D","updated":"2013-01-11 10:30:49.000000000","message":"Sounds reasonable.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if tenant_network_type not in [constants.TYPE_LOCAL,"},{"line_number":181,"context_line":"                                       constants.TYPE_FLAT,"},{"line_number":182,"context_line":"                                       constants.TYPE_VLAN,"},{"line_number":183,"context_line":"                                       constants.TYPE_NVGRE,"},{"line_number":184,"context_line":"                                       constants.TYPE_NONE]:"},{"line_number":185,"context_line":"            msg \u003d _("},{"line_number":186,"context_line":"                \"Invalid tenant_network_type: %(tenant_network_type)s. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpvQ%3D","line":183,"in_reply_to":"AAAAM3%2F%2FsCI%3D","updated":"2013-01-11 00:23:30.000000000","message":"That\u0027s why the constant maps to \u0027gre\u0027 instead of \u0027nvgre\u0027, I preferred to avoid changing the extensions as in this case \u0027gre\u0027 is a fair enough approxymation","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if tenant_network_type not in [constants.TYPE_LOCAL,"},{"line_number":181,"context_line":"                                       constants.TYPE_FLAT,"},{"line_number":182,"context_line":"                                       constants.TYPE_VLAN,"},{"line_number":183,"context_line":"                                       constants.TYPE_NVGRE,"},{"line_number":184,"context_line":"                                       constants.TYPE_NONE]:"},{"line_number":185,"context_line":"            msg \u003d _("},{"line_number":186,"context_line":"                \"Invalid tenant_network_type: %(tenant_network_type)s. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsCI%3D","line":183,"in_reply_to":"AAAAM3%2F%2FsVo%3D","updated":"2013-01-09 15:59:37.000000000","message":"Pls also note you\u0027ll need to add your network type to the API extension. I had a similar issue when adding STT support.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        if tenant_network_type not in [constants.TYPE_LOCAL,"},{"line_number":181,"context_line":"                                       constants.TYPE_FLAT,"},{"line_number":182,"context_line":"                                       constants.TYPE_VLAN,"},{"line_number":183,"context_line":"                                       constants.TYPE_NVGRE,"},{"line_number":184,"context_line":"                                       constants.TYPE_NONE]:"},{"line_number":185,"context_line":"            msg \u003d _("},{"line_number":186,"context_line":"                \"Invalid tenant_network_type: %(tenant_network_type)s. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsVo%3D","line":183,"in_reply_to":"AAAAM3%2F%2FsZs%3D","updated":"2013-01-09 12:54:02.000000000","message":"Done","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":370,"context_line":"        return subnet"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def delete_subnet(self, context, id):"},{"line_number":373,"context_line":"        super(HyperVQuantumPlugin, self).delete_subnet(context, id)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":376,"context_line":"        subnet \u003d super(HyperVQuantumPlugin, self).get_subnet("}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FsA4%3D","line":373,"updated":"2013-01-09 15:59:37.000000000","message":"there\u0027s no need to override these methods, I think (this commets refer to all subnet and most port methods where you just call the superclass)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":370,"context_line":"        return subnet"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def delete_subnet(self, context, id):"},{"line_number":373,"context_line":"        super(HyperVQuantumPlugin, self).delete_subnet(context, id)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":376,"context_line":"        subnet \u003d super(HyperVQuantumPlugin, self).get_subnet("}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpMQ%3D","line":373,"in_reply_to":"AAAAM3%2F%2FpvM%3D","updated":"2013-01-11 10:30:49.000000000","message":"Thanks - people should look at the base class for guidance anyway :)","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        return subnet"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"    def delete_subnet(self, context, id):"},{"line_number":373,"context_line":"        super(HyperVQuantumPlugin, self).delete_subnet(context, id)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def get_subnet(self, context, id, fields\u003dNone):"},{"line_number":376,"context_line":"        subnet \u003d super(HyperVQuantumPlugin, self).get_subnet("}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAM3%2F%2FpvM%3D","line":373,"in_reply_to":"AAAAM3%2F%2FsA4%3D","updated":"2013-01-11 00:23:30.000000000","message":"I left it as a guidance for future development, but I agree that they can be removed at this stage.","commit_id":"179dcb635c082ad7ed531a7a7630da93e2e51754"}],"quantum/plugins/hyperv/model.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.db.models_v2 import model_base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VlanAllocation(model_base.BASEV2):"},{"line_number":25,"context_line":"    \"\"\"Represents allocation state of vlan_id on physical network\"\"\""},{"line_number":26,"context_line":"    __tablename__ \u003d \u0027hyperv_vlan_allocations\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2Fwdo%3D","line":23,"updated":"2013-01-07 14:20:00.000000000","message":"Will tunnels be supported?","commit_id":"4adec17a911d84d6e4d7c8466a3612ecb3b26229"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum.db.models_v2 import model_base"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class VlanAllocation(model_base.BASEV2):"},{"line_number":25,"context_line":"    \"\"\"Represents allocation state of vlan_id on physical network\"\"\""},{"line_number":26,"context_line":"    __tablename__ \u003d \u0027hyperv_vlan_allocations\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FwbQ%3D","line":23,"in_reply_to":"AAAAM3%2F%2Fwdo%3D","updated":"2013-01-07 14:35:09.000000000","message":"yes, Dan asked to keep the plugin as simple as possible for the first release. We are going to commit the NVGRE / Tunnelling support afterwards.","commit_id":"4adec17a911d84d6e4d7c8466a3612ecb3b26229"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":30,"context_line":"                     autoincrement\u003dFalse)"},{"line_number":31,"context_line":"    allocated \u003d Column(Boolean, nullable\u003dFalse)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, physical_network, vlan_id):"},{"line_number":34,"context_line":"        self.physical_network \u003d physical_network"},{"line_number":35,"context_line":"        self.vlan_id \u003d vlan_id"},{"line_number":36,"context_line":"        self.allocated \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvJg%3D","line":33,"updated":"2013-01-08 05:57:16.000000000","message":"You do not need to declare an init unless you doing something custom.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":30,"context_line":"                     autoincrement\u003dFalse)"},{"line_number":31,"context_line":"    allocated \u003d Column(Boolean, nullable\u003dFalse)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def __init__(self, physical_network, vlan_id):"},{"line_number":34,"context_line":"        self.physical_network \u003d physical_network"},{"line_number":35,"context_line":"        self.vlan_id \u003d vlan_id"},{"line_number":36,"context_line":"        self.allocated \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu9w%3D","line":33,"in_reply_to":"AAAAM3%2F%2FvJg%3D","updated":"2013-01-08 09:32:52.000000000","message":"I like to use constructors for field / property initialization, not only for method invocation during initialization, but maybe I\u0027m not getting your point here","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.vlan_id \u003d vlan_id"},{"line_number":36,"context_line":"        self.allocated \u003d False"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __repr__(self):"},{"line_number":39,"context_line":"        return \"\u003cVlanAllocation(%s,%d,%s)\u003e\" % (self.physical_network,"},{"line_number":40,"context_line":"                                               self.vlan_id, self.allocated)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvJc%3D","line":38,"updated":"2013-01-08 05:57:16.000000000","message":"I don\u0027t see the need to override the base repr()","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        self.vlan_id \u003d vlan_id"},{"line_number":36,"context_line":"        self.allocated \u003d False"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __repr__(self):"},{"line_number":39,"context_line":"        return \"\u003cVlanAllocation(%s,%d,%s)\u003e\" % (self.physical_network,"},{"line_number":40,"context_line":"                                               self.vlan_id, self.allocated)"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu9k%3D","line":38,"in_reply_to":"AAAAM3%2F%2FvJc%3D","updated":"2013-01-08 09:32:52.000000000","message":"Another of the areas coming from the OVS plugin. Can be removed, np.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":51,"context_line":"    physical_network \u003d Column(String(64))"},{"line_number":52,"context_line":"    segmentation_id \u003d Column(Integer)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __init__(self, network_id, network_type, physical_network,"},{"line_number":55,"context_line":"                 segmentation_id):"},{"line_number":56,"context_line":"        self.network_id \u003d network_id"},{"line_number":57,"context_line":"        self.network_type \u003d network_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvJo%3D","line":54,"updated":"2013-01-08 05:57:16.000000000","message":"You do not need to declare an init unless you doing something custom.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    physical_network \u003d Column(String(64))"},{"line_number":52,"context_line":"    segmentation_id \u003d Column(Integer)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def __init__(self, network_id, network_type, physical_network,"},{"line_number":55,"context_line":"                 segmentation_id):"},{"line_number":56,"context_line":"        self.network_id \u003d network_id"},{"line_number":57,"context_line":"        self.network_type \u003d network_type"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu9g%3D","line":54,"in_reply_to":"AAAAM3%2F%2FvJo%3D","updated":"2013-01-08 09:32:52.000000000","message":"as above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.physical_network \u003d physical_network"},{"line_number":59,"context_line":"        self.segmentation_id \u003d segmentation_id"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def __repr__(self):"},{"line_number":62,"context_line":"        return \"\u003cNetworkBinding(%s,%s,%s,%d)\u003e\" % (self.network_id,"},{"line_number":63,"context_line":"                                                  self.network_type,"},{"line_number":64,"context_line":"                                                  self.physical_network,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvJk%3D","line":61,"updated":"2013-01-08 05:57:16.000000000","message":"I don\u0027t see the need to override the base repr().","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        self.physical_network \u003d physical_network"},{"line_number":59,"context_line":"        self.segmentation_id \u003d segmentation_id"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def __repr__(self):"},{"line_number":62,"context_line":"        return \"\u003cNetworkBinding(%s,%s,%s,%d)\u003e\" % (self.network_id,"},{"line_number":63,"context_line":"                                                  self.network_type,"},{"line_number":64,"context_line":"                                                  self.physical_network,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu9c%3D","line":61,"in_reply_to":"AAAAM3%2F%2FvJk%3D","updated":"2013-01-08 09:32:52.000000000","message":"as above","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"}],"quantum/plugins/hyperv/rpc_callbacks.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a403077e6684bc62b98e837bf6b76721d05cca01","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from quantum.openstack.common import rpc"},{"line_number":35,"context_line":"from quantum.openstack.common.rpc import proxy"},{"line_number":36,"context_line":"from quantum import policy"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"from quantum.plugins.hyperv import db as hyperv_db"},{"line_number":39,"context_line":"from quantum.plugins.hyperv.common import constants"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FxM4%3D","line":37,"updated":"2013-01-06 18:34:38.000000000","message":"why new line?","commit_id":"4fa3de941edb64592d2b55c8b88d337ae9899f8d"}],"quantum/tests/unit/hyperv/test_hyperv_quantum_agent.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.agent.plugin_rpc \u003d mock.Mock()\r"},{"line_number":41,"context_line":"        self.agent.context \u003d mock.Mock()\r"},{"line_number":42,"context_line":"        self.agent.agent_id \u003d mock.Mock()\r"},{"line_number":43,"context_line":"        self.agent._utils \u003d mock.Mock()\r"},{"line_number":44,"context_line":"\r"},{"line_number":45,"context_line":"    def test_port_bound(self):\r"},{"line_number":46,"context_line":"        port \u003d mock.Mock()\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvJY%3D","line":43,"updated":"2013-01-08 05:57:16.000000000","message":"def tearDown(self):\n    cfg.CONF.reset()","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        self.agent.plugin_rpc \u003d mock.Mock()\r"},{"line_number":41,"context_line":"        self.agent.context \u003d mock.Mock()\r"},{"line_number":42,"context_line":"        self.agent.agent_id \u003d mock.Mock()\r"},{"line_number":43,"context_line":"        self.agent._utils \u003d mock.Mock()\r"},{"line_number":44,"context_line":"\r"},{"line_number":45,"context_line":"    def test_port_bound(self):\r"},{"line_number":46,"context_line":"        port \u003d mock.Mock()\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu18%3D","line":43,"in_reply_to":"AAAAM3%2F%2FvJY%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":46,"context_line":"        port \u003d mock.Mock()\r"},{"line_number":47,"context_line":"        net_uuid \u003d \u0027my-net-uuid\u0027\r"},{"line_number":48,"context_line":"        with mock.patch.object(\r"},{"line_number":49,"context_line":"                self.agent._utils, \u0027connect_vnic_to_vswitch\u0027):\r"},{"line_number":50,"context_line":"            with mock.patch.object(\r"},{"line_number":51,"context_line":"                    self.agent._utils, \u0027set_vswitch_port_vlan_id\u0027):\r"},{"line_number":52,"context_line":"                    self.agent._port_bound(port, net_uuid, \u0027vlan\u0027, None, None)\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvJI%3D","line":49,"updated":"2013-01-08 05:57:16.000000000","message":"self.agent_utils is already a mock.  No need to patch again.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":68,"context_line":"                self.agent._port_unbound(net_uuid)\r"},{"line_number":69,"context_line":"\r"},{"line_number":70,"context_line":"    def test_treat_devices_added_returns_true_for_missing_device(self):\r"},{"line_number":71,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027get_device_details\u0027,\r"},{"line_number":72,"context_line":"                               side_effect\u003dException()):\r"},{"line_number":73,"context_line":"            self.assertTrue(self.agent._treat_devices_added([{}]))\r"},{"line_number":74,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvI8%3D","line":71,"updated":"2013-01-08 05:57:16.000000000","message":"self.agent.plugin_rpc is already a mock no need to patch again.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                self.agent._port_unbound(net_uuid)\r"},{"line_number":69,"context_line":"\r"},{"line_number":70,"context_line":"    def test_treat_devices_added_returns_true_for_missing_device(self):\r"},{"line_number":71,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027get_device_details\u0027,\r"},{"line_number":72,"context_line":"                               side_effect\u003dException()):\r"},{"line_number":73,"context_line":"            self.assertTrue(self.agent._treat_devices_added([{}]))\r"},{"line_number":74,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu1Q%3D","line":71,"in_reply_to":"AAAAM3%2F%2FvI8%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":78,"context_line":"        :param func_name: the function that should be called\r"},{"line_number":79,"context_line":"        :returns: whether the named function was called\r"},{"line_number":80,"context_line":"        \"\"\"\r"},{"line_number":81,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027get_device_details\u0027,\r"},{"line_number":82,"context_line":"                               return_value\u003ddetails):\r"},{"line_number":83,"context_line":"            with mock.patch.object(self.agent, func_name) as func:\r"},{"line_number":84,"context_line":"                self.assertFalse(self.agent._treat_devices_added([{}]))\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvI4%3D","line":81,"updated":"2013-01-08 05:57:16.000000000","message":"same as above\n\nAlso you verify that the mocks are being called with the args you expect.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        :param func_name: the function that should be called\r"},{"line_number":79,"context_line":"        :returns: whether the named function was called\r"},{"line_number":80,"context_line":"        \"\"\"\r"},{"line_number":81,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027get_device_details\u0027,\r"},{"line_number":82,"context_line":"                               return_value\u003ddetails):\r"},{"line_number":83,"context_line":"            with mock.patch.object(self.agent, func_name) as func:\r"},{"line_number":84,"context_line":"                self.assertFalse(self.agent._treat_devices_added([{}]))\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu08%3D","line":81,"in_reply_to":"AAAAM3%2F%2FvI4%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                                      \u0027_treat_vif_port\u0027))\r"},{"line_number":92,"context_line":"\r"},{"line_number":93,"context_line":"    def test_treat_devices_removed_returns_true_for_missing_device(self):\r"},{"line_number":94,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027update_device_down\u0027,\r"},{"line_number":95,"context_line":"                               side_effect\u003dException()):\r"},{"line_number":96,"context_line":"            self.assertTrue(self.agent._treat_devices_removed([{}]))\r"},{"line_number":97,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvIk%3D","line":94,"updated":"2013-01-08 05:57:16.000000000","message":"same","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                                                      \u0027_treat_vif_port\u0027))\r"},{"line_number":92,"context_line":"\r"},{"line_number":93,"context_line":"    def test_treat_devices_removed_returns_true_for_missing_device(self):\r"},{"line_number":94,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027update_device_down\u0027,\r"},{"line_number":95,"context_line":"                               side_effect\u003dException()):\r"},{"line_number":96,"context_line":"            self.assertTrue(self.agent._treat_devices_removed([{}]))\r"},{"line_number":97,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu04%3D","line":94,"in_reply_to":"AAAAM3%2F%2FvIk%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":97,"context_line":"\r"},{"line_number":98,"context_line":"    def mock_treat_devices_removed(self, port_exists):\r"},{"line_number":99,"context_line":"        details \u003d dict(exists\u003dport_exists)\r"},{"line_number":100,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027update_device_down\u0027,\r"},{"line_number":101,"context_line":"                               return_value\u003ddetails):\r"},{"line_number":102,"context_line":"            with mock.patch.object(self.agent, \u0027_port_unbound\u0027) as func:\r"},{"line_number":103,"context_line":"                self.assertFalse(self.agent._treat_devices_removed([{}]))\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvIw%3D","line":100,"updated":"2013-01-08 05:57:16.000000000","message":"same","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":97,"context_line":"\r"},{"line_number":98,"context_line":"    def mock_treat_devices_removed(self, port_exists):\r"},{"line_number":99,"context_line":"        details \u003d dict(exists\u003dport_exists)\r"},{"line_number":100,"context_line":"        with mock.patch.object(self.agent.plugin_rpc, \u0027update_device_down\u0027,\r"},{"line_number":101,"context_line":"                               return_value\u003ddetails):\r"},{"line_number":102,"context_line":"            with mock.patch.object(self.agent, \u0027_port_unbound\u0027) as func:\r"},{"line_number":103,"context_line":"                self.assertFalse(self.agent._treat_devices_removed([{}]))\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2Fu00%3D","line":100,"in_reply_to":"AAAAM3%2F%2FvIw%3D","updated":"2013-01-08 15:01:31.000000000","message":"Done","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"}],"quantum/tests/unit/hyperv/test_hyperv_quantum_plugin.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"\r"},{"line_number":41,"context_line":"class TestHyperVVirtualSwitchPortsV2(\r"},{"line_number":42,"context_line":"        test_plugin.TestPortsV2, HyperVQuantumPluginTestCase):\r"},{"line_number":43,"context_line":"    pass\r"},{"line_number":44,"context_line":"\r"},{"line_number":45,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2FnVA%3D","line":42,"updated":"2013-01-13 14:42:41.000000000","message":"Can you please add a test to check for the port binding - Please see https://github.com/openstack/quantum/blob/master/quantum/tests/unit/openvswitch/test_openvswitch_plugin.py#L46 for an example","commit_id":"b42a81e066f1c1f3c4ba30939d55090f1a107808"},{"author":{"_account_id":3185,"name":"Alessandro Pilotti","email":"apilotti@cloudbasesolutions.com","username":"alexpilotti"},"change_message_id":"e5b3fbb6d2f179ea95330cbbf2ef82134b2297be","unresolved":false,"context_lines":[{"line_number":39,"context_line":"\r"},{"line_number":40,"context_line":"\r"},{"line_number":41,"context_line":"class TestHyperVVirtualSwitchPortsV2(\r"},{"line_number":42,"context_line":"        test_plugin.TestPortsV2, HyperVQuantumPluginTestCase):\r"},{"line_number":43,"context_line":"    pass\r"},{"line_number":44,"context_line":"\r"},{"line_number":45,"context_line":"\r"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAAM3%2F%2FnPc%3D","line":42,"in_reply_to":"AAAAM3%2F%2FnVA%3D","updated":"2013-01-13 17:24:03.000000000","message":"Done","commit_id":"b42a81e066f1c1f3c4ba30939d55090f1a107808"}],"quantum/tests/unit/hyperv/test_hyperv_rpcapi.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":"Unit Tests for hyperv quantum rpc\r"},{"line_number":21,"context_line":"\"\"\"\r"},{"line_number":22,"context_line":"\r"},{"line_number":23,"context_line":"import stubout\r"},{"line_number":24,"context_line":"import unittest2\r"},{"line_number":25,"context_line":"\r"},{"line_number":26,"context_line":"from quantum.agent import rpc as agent_rpc\r"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FvIQ%3D","line":23,"updated":"2013-01-08 05:57:16.000000000","message":"Please don\u0027t use stubout for new code.  mock should be used here.","commit_id":"7df8deb7127464de1650fce9ea2f8b3279cc7be7"}]}
