)]}'
{"etc/neutron/plugins/ml2/ml2_conf_cisco.ini":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"0143dfa61c5729d4a33a7b26c174540e6c9f603f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# svi_round_robin \u003d False"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"#"},{"line_number":14,"context_line":"# (StrOpt) The physical_network name used for this VLAN."},{"line_number":15,"context_line":"# This string value must be present in the ml2_conf.ini network_vlan_ranges"},{"line_number":16,"context_line":"# variable."},{"line_number":17,"context_line":"#"}],"source_content_type":"text/x-properties","patch_set":3,"id":"AAAAS3%2F%2FXzA%3D","line":14,"updated":"2013-09-27 22:14:56.000000000","message":"I don\u0027t think \"for this VLAN\" makes sense here. How about \"The name of the physical_network managed via the Cisco Nexus Switch.\"?","commit_id":"b6e3ebc1ce7afc8eea68a7856fd03907ce7220c0"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"aae589599d49bb5b3b42de2994a5f82904475d50","unresolved":false,"context_lines":[{"line_number":11,"context_line":"# svi_round_robin \u003d False"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"#"},{"line_number":14,"context_line":"# (StrOpt) The physical_network name used for this VLAN."},{"line_number":15,"context_line":"# This string value must be present in the ml2_conf.ini network_vlan_ranges"},{"line_number":16,"context_line":"# variable."},{"line_number":17,"context_line":"#"}],"source_content_type":"text/x-properties","patch_set":3,"id":"AAAAS3%2F%2FXqs%3D","line":14,"in_reply_to":"AAAAS3%2F%2FXzA%3D","updated":"2013-09-28 00:28:38.000000000","message":"Done","commit_id":"b6e3ebc1ce7afc8eea68a7856fd03907ce7220c0"}],"neutron/plugins/ml2/drivers/cisco/config.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"0143dfa61c5729d4a33a7b26c174540e6c9f603f","unresolved":false,"context_lines":[{"line_number":21,"context_line":"               help\u003d_(\"VLAN Name prefix\")),"},{"line_number":22,"context_line":"    cfg.BoolOpt(\u0027svi_round_robin\u0027, default\u003dFalse,"},{"line_number":23,"context_line":"                help\u003d_(\"Distribute SVI interfaces over all switches\")),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027managed_physical_network\u0027, default\u003d\u0027physnet1\u0027,"},{"line_number":25,"context_line":"               help\u003d_(\"Supported physical network for this switch.\")),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FXyk%3D","line":24,"updated":"2013-09-27 22:14:56.000000000","message":"We should not build-in a default physical_network name.","commit_id":"b6e3ebc1ce7afc8eea68a7856fd03907ce7220c0"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"aae589599d49bb5b3b42de2994a5f82904475d50","unresolved":false,"context_lines":[{"line_number":21,"context_line":"               help\u003d_(\"VLAN Name prefix\")),"},{"line_number":22,"context_line":"    cfg.BoolOpt(\u0027svi_round_robin\u0027, default\u003dFalse,"},{"line_number":23,"context_line":"                help\u003d_(\"Distribute SVI interfaces over all switches\")),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027managed_physical_network\u0027, default\u003d\u0027physnet1\u0027,"},{"line_number":25,"context_line":"               help\u003d_(\"Supported physical network for this switch.\")),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FXqY%3D","line":24,"in_reply_to":"AAAAS3%2F%2FXyk%3D","updated":"2013-09-28 00:28:38.000000000","message":"I started off using None and then had a brain cramp and thought that \u0027physnet1\u0027 was a devstack default. It\u0027s not so I\u0027ll change back to None.\nUnfortunately this is going to require a few UT changes.\n(more that the one you mentioned.)","commit_id":"b6e3ebc1ce7afc8eea68a7856fd03907ce7220c0"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"097d8314e68076ee62696dee4847c8e6ccac1089","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    cfg.BoolOpt(\u0027svi_round_robin\u0027, default\u003dFalse,"},{"line_number":23,"context_line":"                help\u003d_(\"Distribute SVI interfaces over all switches\")),"},{"line_number":24,"context_line":"    cfg.StrOpt(\u0027managed_physical_network\u0027, default\u003dNone,"},{"line_number":25,"context_line":"               help\u003d_(\"Supported physical network for this switch.\")),"},{"line_number":26,"context_line":"]"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAS3%2F%2FW38%3D","line":25,"updated":"2013-09-28 15:04:06.000000000","message":"I think \u0027supported\u0027 is confusing and \u0027this switch\u0027 is wrong for multiple switches. I suggest: \"The physical network managed by the switches.\"","commit_id":"1e7024a0a4ea9f2182736babc28c14cae734c0ad"}],"neutron/plugins/ml2/drivers/cisco/mech_cisco_nexus.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"527c67b6fa59145317bc22af1fe77b17e5dbf20a","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def _get_vlanid(self, context):"},{"line_number":55,"context_line":"        if context.bound_segment:"},{"line_number":56,"context_line":"            return context.bound_segment.get(api.SEGMENTATION_ID)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _valid_device_owner(self, port):"},{"line_number":59,"context_line":"        return \u0027compute:\u0027 in port[\u0027device_owner\u0027]"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FYiM%3D","line":56,"updated":"2013-09-27 18:23:59.000000000","message":"Should this also verify that network_type is vlan?\n\nAlso, given that multiple different physical networks are not (yet) supported, maybe the code should verify that physical_network is the expected value (from config?).","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"a98db693aef54eec2eae8538510057687a339178","unresolved":false,"context_lines":[{"line_number":56,"context_line":"            return context.bound_segment.get(api.SEGMENTATION_ID)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _valid_device_owner(self, port):"},{"line_number":59,"context_line":"        return \u0027compute:\u0027 in port[\u0027device_owner\u0027]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _valid_status(self, port):"},{"line_number":62,"context_line":"        return port[\u0027status\u0027] \u003d\u003d n_const.PORT_STATUS_ACTIVE"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FYmI%3D","line":59,"updated":"2013-09-27 17:51:25.000000000","message":"This needs to be\n\n    return port[\u0027device_owner\u0027].startswith(\u0027compute:\u0027)","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"876d0dd6c3157116cbc64b96410ca177ab0c58d4","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def _valid_device_owner(self, port):"},{"line_number":59,"context_line":"        return \u0027compute:\u0027 in port[\u0027device_owner\u0027]"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    def _valid_status(self, port):"},{"line_number":62,"context_line":"        return port[\u0027status\u0027] \u003d\u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def _get_credential(self, nexus_ip):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FZJU%3D","line":61,"updated":"2013-09-27 16:31:28.000000000","message":"Consider changing name from \u0027_valid_status\u0027 to \u0027_is_active\u0027 or something like that. The word \"valid\" is a bit ambiguous, e.g. it can apply in a broader sense to other port statuses, e.g. inactive. (Same consideration for _valid_device_owner).","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"},{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"527c67b6fa59145317bc22af1fe77b17e5dbf20a","unresolved":false,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        port \u003d context.current"},{"line_number":165,"context_line":"        device_id \u003d port[\u0027device_id\u0027]"},{"line_number":166,"context_line":"        vlan_id \u003d self._get_vlanid(context)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # Delete DB row for this port"},{"line_number":169,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FYhA%3D","line":166,"updated":"2013-09-27 18:23:59.000000000","message":"Return if vlan_id is None (not a VLAN) or no device_id?","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"}],"neutron/tests/unit/ml2/drivers/test_cisco_mech.py":[{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"876d0dd6c3157116cbc64b96410ca177ab0c58d4","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    def _create_port_res(self, name\u003d\u0027myname\u0027, cidr\u003dCIDR_1,"},{"line_number":164,"context_line":"                         device_id\u003dDEVICE_ID_1,"},{"line_number":165,"context_line":"                         host_id\u003dCOMP_HOST_NAME,"},{"line_number":166,"context_line":"                         expected_code\u003dwexc.HTTPOk.code):"},{"line_number":167,"context_line":"        \"\"\"Create network, subnet, and port resources for test cases."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"        Create a network, subnet, port and then update port, yield the result,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FY%2B8%3D","line":166,"updated":"2013-09-27 16:31:28.000000000","message":"Consider changing this argument from expected_code to expected_exception, and then do the mapping of exception to the expected HTTP code within this method (rather than doing it for ever call to this method).","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"876d0dd6c3157116cbc64b96410ca177ab0c58d4","unresolved":false,"context_lines":[{"line_number":187,"context_line":"                             \u0027device_owner\u0027: \u0027compute:none\u0027,"},{"line_number":188,"context_line":"                             \u0027admin_state_up\u0027: True}"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"                res \u003d self._create_port(self.fmt, net_id, arg_list\u003dargs,"},{"line_number":191,"context_line":"                                        context\u003dctx, **port_dict)"},{"line_number":192,"context_line":"                port \u003d self.deserialize(self.fmt, res)"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FZBo%3D","line":190,"updated":"2013-09-27 16:31:28.000000000","message":"I don\u0027t think we need to yield the result of the create port operation anymore (only need the port), so I think we can use the self.port() inherited method, and get the port directly.","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"876d0dd6c3157116cbc64b96410ca177ab0c58d4","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                             expected_code\u003dexpected_code, neutron_context\u003dctx)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"                try:"},{"line_number":199,"context_line":"                    yield res"},{"line_number":200,"context_line":"                finally:"},{"line_number":201,"context_line":"                    self._delete(\u0027ports\u0027, port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FZA4%3D","line":199,"updated":"2013-09-27 16:31:28.000000000","message":"I don\u0027t think there are any remaining test cases which look at the result code, so you should be able to yield the port here, instead of the result object.","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"},{"author":{"_account_id":6695,"name":"Dane LeBlanc","email":"leblancd@cisco.com","username":"leblancd"},"change_message_id":"876d0dd6c3157116cbc64b96410ca177ab0c58d4","unresolved":false,"context_lines":[{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        \"\"\""},{"line_number":209,"context_line":"        if exc in base.FAULT_MAP:"},{"line_number":210,"context_line":"            expected_http \u003d base.FAULT_MAP[exc].code"},{"line_number":211,"context_line":"        else:"},{"line_number":212,"context_line":"            expected_http \u003d wexc.HTTPInternalServerError.code"},{"line_number":213,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAS3%2F%2FZE8%3D","line":210,"updated":"2013-09-27 16:31:28.000000000","message":"This isn\u0027t in your changeset, but in a separate bug, we should extend the FAULT_MAP for cisco-specific faults. Otherwise, everything is getting mapped to HTTPInternalServerError by default.","commit_id":"a62f07ef25e6c581654920d50b76cf36c5aa058b"}],"neutron/tests/unit/ml2/drivers/test_cisco_nexus.py":[{"author":{"_account_id":1689,"name":"Robert Kukura","email":"rk@theep.net","username":"rkukura"},"change_message_id":"0143dfa61c5729d4a33a7b26c174540e6c9f603f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"DEVICE_OWNER \u003d \u0027compute:test\u0027"},{"line_number":48,"context_line":"NEXUS_SSH_PORT \u003d \u002722\u0027"},{"line_number":49,"context_line":"PORT_STATE \u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":50,"context_line":"PHYSICAL_NETWORK \u003d \u0027physnet1\u0027"},{"line_number":51,"context_line":"NETWORK_TYPE \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"NEXUS_DRIVER \u003d (\u0027neutron.plugins.ml2.drivers.cisco.\u0027"},{"line_number":53,"context_line":"                \u0027nexus_network_driver.CiscoNexusDriver\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FXyU%3D","line":50,"updated":"2013-09-27 22:14:56.000000000","message":"After removing the default value, you will need to configure a value for managed_physical_network for the unit tests.","commit_id":"b6e3ebc1ce7afc8eea68a7856fd03907ce7220c0"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"46f2237a488f62ed53372acfd07e150f7969596f","unresolved":false,"context_lines":[{"line_number":47,"context_line":"DEVICE_OWNER \u003d \u0027compute:test\u0027"},{"line_number":48,"context_line":"NEXUS_SSH_PORT \u003d \u002722\u0027"},{"line_number":49,"context_line":"PORT_STATE \u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":50,"context_line":"PHYSICAL_NETWORK \u003d \u0027physnet1\u0027"},{"line_number":51,"context_line":"NETWORK_TYPE \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"NEXUS_DRIVER \u003d (\u0027neutron.plugins.ml2.drivers.cisco.\u0027"},{"line_number":53,"context_line":"                \u0027nexus_network_driver.CiscoNexusDriver\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FXkg%3D","line":50,"in_reply_to":"AAAAS3%2F%2FXpA%3D","updated":"2013-09-28 01:19:01.000000000","message":"I reworked the check in mech_cisco_nexus.py to also allow a managed_physical_network of None so I can remove the PHYSICAL_NETWORK change.","commit_id":"b6e3ebc1ce7afc8eea68a7856fd03907ce7220c0"},{"author":{"_account_id":6694,"name":"rcurran","email":"rcurran@cisco.com","username":"rcurran"},"change_message_id":"aae589599d49bb5b3b42de2994a5f82904475d50","unresolved":false,"context_lines":[{"line_number":47,"context_line":"DEVICE_OWNER \u003d \u0027compute:test\u0027"},{"line_number":48,"context_line":"NEXUS_SSH_PORT \u003d \u002722\u0027"},{"line_number":49,"context_line":"PORT_STATE \u003d n_const.PORT_STATUS_ACTIVE"},{"line_number":50,"context_line":"PHYSICAL_NETWORK \u003d \u0027physnet1\u0027"},{"line_number":51,"context_line":"NETWORK_TYPE \u003d \u0027vlan\u0027"},{"line_number":52,"context_line":"NEXUS_DRIVER \u003d (\u0027neutron.plugins.ml2.drivers.cisco.\u0027"},{"line_number":53,"context_line":"                \u0027nexus_network_driver.CiscoNexusDriver\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FXpA%3D","line":50,"in_reply_to":"AAAAS3%2F%2FXyU%3D","updated":"2013-09-28 00:28:38.000000000","message":"Correct. Here and in test_cisco_mech.py also.","commit_id":"b6e3ebc1ce7afc8eea68a7856fd03907ce7220c0"}]}
