)]}'
{"etc/tempest.conf.sample":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"b72df09cbb64853e0335cc914b8711e30fcaabf5","unresolved":false,"context_lines":[{"line_number":758,"context_line":"#endpoint_type \u003d publicURL"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"# List of supported port types (see port[\u0027binding:vnic_type\u0027]) to be"},{"line_number":761,"context_line":"# used when launching an instance with a pre-created port.Currently:"},{"line_number":762,"context_line":"# normal,direct,macvtap (list value)"},{"line_number":763,"context_line":"#ports_vnic_types \u003d normal"},{"line_number":764,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3a961159_5bab7d74","line":761,"updated":"2014-12-23 11:13:07.000000000","message":"missed a space before \"Currently\"\nSuggest: \"Currently testing [list of strings]\"","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"51a65ba35495b5d81d4387268f14f96f324c81f1","unresolved":false,"context_lines":[{"line_number":758,"context_line":"#endpoint_type \u003d publicURL"},{"line_number":759,"context_line":""},{"line_number":760,"context_line":"# List of supported port types (see port[\u0027binding:vnic_type\u0027]) to be"},{"line_number":761,"context_line":"# used when launching an instance with a pre-created port.Currently:"},{"line_number":762,"context_line":"# normal,direct,macvtap (list value)"},{"line_number":763,"context_line":"#ports_vnic_types \u003d normal"},{"line_number":764,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":4,"id":"3a961159_90605fd0","line":761,"in_reply_to":"3a961159_5bab7d74","updated":"2014-12-23 12:16:43.000000000","message":"Done","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"}],"tempest/config.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"52c2a952b085619cb1c313fab7557822f8fc967b","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                help\u003d\"List of dns servers which should be used\""},{"line_number":452,"context_line":"                     \" for subnet creation\"),"},{"line_number":453,"context_line":"    cfg.StrOpt(\u0027port_vnic_type\u0027,"},{"line_number":454,"context_line":"               default\u003dNone,"},{"line_number":455,"context_line":"               help\u003d\"vnic_type to use when Launching instances\""},{"line_number":456,"context_line":"                    \" with pre-configured ports\""},{"line_number":457,"context_line":"                    \" (see port[\u0027binding:vnic_type\u0027]). \""}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_9b1e3262","line":454,"updated":"2015-02-03 16:03:09.000000000","message":"Nit: You don\u0027t need to set default\u003dNone this is the default for StrOpt.","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"28879b801135e316b472ee07a8b55c057608bc1b","unresolved":false,"context_lines":[{"line_number":451,"context_line":"                help\u003d\"List of dns servers which should be used\""},{"line_number":452,"context_line":"                     \" for subnet creation\"),"},{"line_number":453,"context_line":"    cfg.StrOpt(\u0027port_vnic_type\u0027,"},{"line_number":454,"context_line":"               default\u003dNone,"},{"line_number":455,"context_line":"               help\u003d\"vnic_type to use when Launching instances\""},{"line_number":456,"context_line":"                    \" with pre-configured ports\""},{"line_number":457,"context_line":"                    \" (see port[\u0027binding:vnic_type\u0027]). \""}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_3110eba7","line":454,"in_reply_to":"da86d52c_9b1e3262","updated":"2015-02-04 12:05:52.000000000","message":"Done","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"fd468c070961bc5ab4a059ec88d78dcdb107c56c","unresolved":false,"context_lines":[{"line_number":457,"context_line":"               help\u003d\"vnic_type to use when Launching instances\""},{"line_number":458,"context_line":"                    \" with pre-configured ports\""},{"line_number":459,"context_line":"                    \" (see port[\u0027binding:vnic_type\u0027]). \""},{"line_number":460,"context_line":"                    \" Currently testing [\u0027normal\u0027,\u0027direct\u0027,\u0027macvtap\u0027]\"),"},{"line_number":461,"context_line":"]"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"network_feature_group \u003d cfg.OptGroup(name\u003d\u0027network-feature-enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_acd510e6","line":460,"updated":"2015-02-05 20:41:34.000000000","message":"What is currently testing? This is a bit confusing to me, is this just the list of supported types? If so why not just supported options are: \n\n\u0027normal\u0027,\u0027direct\u0027,\u0027macvtap\u0027","commit_id":"2cfff3e8775c3da3603b5c03adbbfcd5b6ff31b8"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"8008c83311c7a359179b8bca888723a089df844a","unresolved":false,"context_lines":[{"line_number":457,"context_line":"               help\u003d\"vnic_type to use when Launching instances\""},{"line_number":458,"context_line":"                    \" with pre-configured ports\""},{"line_number":459,"context_line":"                    \" (see port[\u0027binding:vnic_type\u0027]). \""},{"line_number":460,"context_line":"                    \" Currently testing [\u0027normal\u0027,\u0027direct\u0027,\u0027macvtap\u0027]\"),"},{"line_number":461,"context_line":"]"},{"line_number":462,"context_line":""},{"line_number":463,"context_line":"network_feature_group \u003d cfg.OptGroup(name\u003d\u0027network-feature-enabled\u0027,"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_2c7597ca","line":460,"in_reply_to":"da86d52c_acd510e6","updated":"2015-02-06 01:41:50.000000000","message":"The default is not to create a port at all.\nI\u0027ll change the message","commit_id":"2cfff3e8775c3da3603b5c03adbbfcd5b6ff31b8"}],"tempest/scenario/manager.py":[{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"7317d00f449218a9232c0728f0a10ce988e3224b","unresolved":false,"context_lines":[{"line_number":657,"context_line":"            network_id\u003dnetwork.id,"},{"line_number":658,"context_line":"            tenant_id\u003dnetwork.tenant_id)"},{"line_number":659,"context_line":"        post_body.update(kwargs)"},{"line_number":660,"context_line":"        result \u003d client.create_port(**post_body)"},{"line_number":661,"context_line":"        self.assertIsNotNone(result, \u0027Unable to allocate port\u0027)"},{"line_number":662,"context_line":"        port \u003d net_resources.DeletablePort(client\u003dclient,"},{"line_number":663,"context_line":"                                           **result[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_5b745d35","line":660,"updated":"2014-12-23 10:56:26.000000000","message":"why not to do simpler:\nresult \u003d client.create_port(\n\t            name\u003dname,\n\t            network_id\u003dnetwork.id,\n\t            tenant_id\u003dnetwork.tenant_id,\n                    **kwargs)\nDo you expect keys \u0027name\u0027 \u0027network_id\u0027 \u0027tenant_id\u0027 in kwargs?","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"51a65ba35495b5d81d4387268f14f96f324c81f1","unresolved":false,"context_lines":[{"line_number":657,"context_line":"            network_id\u003dnetwork.id,"},{"line_number":658,"context_line":"            tenant_id\u003dnetwork.tenant_id)"},{"line_number":659,"context_line":"        post_body.update(kwargs)"},{"line_number":660,"context_line":"        result \u003d client.create_port(**post_body)"},{"line_number":661,"context_line":"        self.assertIsNotNone(result, \u0027Unable to allocate port\u0027)"},{"line_number":662,"context_line":"        port \u003d net_resources.DeletablePort(client\u003dclient,"},{"line_number":663,"context_line":"                                           **result[\u0027port\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_f0a0c3f5","line":660,"in_reply_to":"3a961159_5b745d35","updated":"2014-12-23 12:16:43.000000000","message":"Done","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"bd3f9fa503ae61fea301877cc97f595d92cd482a","unresolved":false,"context_lines":[{"line_number":645,"context_line":"            client \u003d self.network_client"},{"line_number":646,"context_line":"        name \u003d data_utils.rand_name(namestart)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        network_id \u003d network if isinstance(network, unicode) else network[\u0027id\u0027]"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"        result \u003d client.create_port("},{"line_number":651,"context_line":"            name\u003dname,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_5c0ff02d","line":648,"updated":"2015-01-08 09:58:53.000000000","message":"I am not fan of the \u0027isinstance\u0027 stuff when it is avoidable.\n\nWhat prevent us to use network_id (string) instead of network method parameter here by changing a \u0027_\u0027 protected(/private) method\u0027s signature ?","commit_id":"c53cd56cb0142ad7c84330969d79073e28a2c90b"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"a64cbdec2df7c2e03b0f469d1eb796a747433f70","unresolved":false,"context_lines":[{"line_number":645,"context_line":"            client \u003d self.network_client"},{"line_number":646,"context_line":"        name \u003d data_utils.rand_name(namestart)"},{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        network_id \u003d network if isinstance(network, unicode) else network[\u0027id\u0027]"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"        result \u003d client.create_port("},{"line_number":651,"context_line":"            name\u003dname,"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a961159_e9a36e9b","line":648,"in_reply_to":"3a961159_5c0ff02d","updated":"2015-01-08 20:10:51.000000000","message":"Done","commit_id":"c53cd56cb0142ad7c84330969d79073e28a2c90b"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"9a20b44b48c14351d85a205b596ddb936c09854f","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"            create_kwargs[\u0027networks\u0027] \u003d ports"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"        return super(NetworkScenarioTest, self).create_server("},{"line_number":1071,"context_line":"            name, image, flavor, wait_on_boot, wait_on_delete, create_kwargs)"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"# power/provision states as of icehouse"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_57477077","line":1071,"updated":"2015-01-12 18:53:31.000000000","message":"Since the called function is declared with keyword args, the call should use them too.","commit_id":"b3e983732b2468a15f37d8edcfed516dc1b77a78"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"df24216a784bf9d2ce173bb21ef56b5db75343a4","unresolved":false,"context_lines":[{"line_number":1068,"context_line":"            create_kwargs[\u0027networks\u0027] \u003d ports"},{"line_number":1069,"context_line":""},{"line_number":1070,"context_line":"        return super(NetworkScenarioTest, self).create_server("},{"line_number":1071,"context_line":"            name, image, flavor, wait_on_boot, wait_on_delete, create_kwargs)"},{"line_number":1072,"context_line":""},{"line_number":1073,"context_line":""},{"line_number":1074,"context_line":"# power/provision states as of icehouse"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a961159_d3d51148","line":1071,"in_reply_to":"3a961159_57477077","updated":"2015-01-13 15:14:15.000000000","message":"Done","commit_id":"b3e983732b2468a15f37d8edcfed516dc1b77a78"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"702d6ce0621ff966ce6bd92560088d16c7100d15","unresolved":false,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        result \u003d client.create_port("},{"line_number":649,"context_line":"            name\u003dname,"},{"line_number":650,"context_line":"            network_id\u003dnetwork_id,"},{"line_number":651,"context_line":"            **kwargs)"},{"line_number":652,"context_line":"        self.assertIsNotNone(result, \u0027Unable to allocate port\u0027)"},{"line_number":653,"context_line":"        port \u003d net_resources.DeletablePort(client\u003dclient,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_7c8b29c0","line":650,"updated":"2015-01-14 13:57:09.000000000","message":"I was trying to understand this change by looking at the calls to this method that must have also been changed. But I don\u0027t see any calls to this method at all. Am I missing something?","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":1192,"name":"David Kranz","email":"dkranz@redhat.com","username":"david-kranz"},"change_message_id":"2dd5e1f247859a210eae2473d7b201339a041952","unresolved":false,"context_lines":[{"line_number":647,"context_line":""},{"line_number":648,"context_line":"        result \u003d client.create_port("},{"line_number":649,"context_line":"            name\u003dname,"},{"line_number":650,"context_line":"            network_id\u003dnetwork_id,"},{"line_number":651,"context_line":"            **kwargs)"},{"line_number":652,"context_line":"        self.assertIsNotNone(result, \u0027Unable to allocate port\u0027)"},{"line_number":653,"context_line":"        port \u003d net_resources.DeletablePort(client\u003dclient,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a961159_a25d6aee","line":650,"in_reply_to":"3a961159_7c8b29c0","updated":"2015-01-14 14:37:08.000000000","message":"Turns out this was dead code so change is not relevant.","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"52c2a952b085619cb1c313fab7557822f8fc967b","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"                      wait_on_boot\u003dTrue, wait_on_delete\u003dTrue,"},{"line_number":1044,"context_line":"                      create_kwargs\u003dNone):"},{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"        net_client \u003d create_kwargs.get(\"network_client\","},{"line_number":1047,"context_line":"                                       self.network_client)"},{"line_number":1048,"context_line":"        vnic_type \u003d CONF.network.port_vnic_type"},{"line_number":1049,"context_line":"        if vnic_type:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_7b47be1d","line":1046,"updated":"2015-02-03 16:03:09.000000000","message":"This will cause issues if create_kwargs isn\u0027t set. Nonetype doesn\u0027t have a get() method.","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"28879b801135e316b472ee07a8b55c057608bc1b","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"                      wait_on_boot\u003dTrue, wait_on_delete\u003dTrue,"},{"line_number":1044,"context_line":"                      create_kwargs\u003dNone):"},{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"        net_client \u003d create_kwargs.get(\"network_client\","},{"line_number":1047,"context_line":"                                       self.network_client)"},{"line_number":1048,"context_line":"        vnic_type \u003d CONF.network.port_vnic_type"},{"line_number":1049,"context_line":"        if vnic_type:"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_019d4c0b","line":1046,"in_reply_to":"da86d52c_7b47be1d","updated":"2015-02-04 12:05:52.000000000","message":"Done","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"52c2a952b085619cb1c313fab7557822f8fc967b","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"            security_groups \u003d net_client.list_security_groups().get("},{"line_number":1051,"context_line":"                \u0027security_groups\u0027)"},{"line_number":1052,"context_line":"            sec_dict \u003d dict([(s[\u0027name\u0027], s[\u0027id\u0027]) for s in security_groups])"},{"line_number":1053,"context_line":"            sec_groups_names \u003d [s[\u0027name\u0027] for s in create_kwargs["},{"line_number":1054,"context_line":"                \u0027security_groups\u0027]]"},{"line_number":1055,"context_line":"            security_groups_ids \u003d [sec_dict[s] for s in sec_groups_names]"},{"line_number":1056,"context_line":"            post_body \u003d {\u0027binding:vnic_type\u0027: vnic_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_5b6e7a30","line":1053,"updated":"2015-02-03 16:03:09.000000000","message":"What if create_kwargs doesn\u0027t have a security_groups entry?","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"28879b801135e316b472ee07a8b55c057608bc1b","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"            security_groups \u003d net_client.list_security_groups().get("},{"line_number":1051,"context_line":"                \u0027security_groups\u0027)"},{"line_number":1052,"context_line":"            sec_dict \u003d dict([(s[\u0027name\u0027], s[\u0027id\u0027]) for s in security_groups])"},{"line_number":1053,"context_line":"            sec_groups_names \u003d [s[\u0027name\u0027] for s in create_kwargs["},{"line_number":1054,"context_line":"                \u0027security_groups\u0027]]"},{"line_number":1055,"context_line":"            security_groups_ids \u003d [sec_dict[s] for s in sec_groups_names]"},{"line_number":1056,"context_line":"            post_body \u003d {\u0027binding:vnic_type\u0027: vnic_type,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_81c93c5b","line":1053,"in_reply_to":"da86d52c_5b6e7a30","updated":"2015-02-04 12:05:52.000000000","message":"Done","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"52c2a952b085619cb1c313fab7557822f8fc967b","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"            security_groups_ids \u003d [sec_dict[s] for s in sec_groups_names]"},{"line_number":1056,"context_line":"            post_body \u003d {\u0027binding:vnic_type\u0027: vnic_type,"},{"line_number":1057,"context_line":"                         \u0027namestart\u0027: \u0027port-smoke\u0027}"},{"line_number":1058,"context_line":"            if security_groups:"},{"line_number":1059,"context_line":"                post_body[\u0027security_groups\u0027] \u003d security_groups_ids"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"            ports \u003d []"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_bb54d621","line":1058,"updated":"2015-02-03 16:03:09.000000000","message":"I\u0027m confused by this check being at the end if there aren\u0027t any security groups returned by the list why did you bother with the above operations to extract a list of ids. Maybe we should be checking this as a condition for doing all of the above work. Or is this meant to be security_group_ids? Then this would make more sense here.","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"28879b801135e316b472ee07a8b55c057608bc1b","unresolved":false,"context_lines":[{"line_number":1055,"context_line":"            security_groups_ids \u003d [sec_dict[s] for s in sec_groups_names]"},{"line_number":1056,"context_line":"            post_body \u003d {\u0027binding:vnic_type\u0027: vnic_type,"},{"line_number":1057,"context_line":"                         \u0027namestart\u0027: \u0027port-smoke\u0027}"},{"line_number":1058,"context_line":"            if security_groups:"},{"line_number":1059,"context_line":"                post_body[\u0027security_groups\u0027] \u003d security_groups_ids"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"            ports \u003d []"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_41ebc4af","line":1058,"in_reply_to":"da86d52c_bb54d621","updated":"2015-02-04 12:05:52.000000000","message":"You are right. It\u0027s security_groups_ids","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"52c2a952b085619cb1c313fab7557822f8fc967b","unresolved":false,"context_lines":[{"line_number":1059,"context_line":"                post_body[\u0027security_groups\u0027] \u003d security_groups_ids"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"            ports \u003d []"},{"line_number":1062,"context_line":"            for net in create_kwargs.get(\u0027networks\u0027):"},{"line_number":1063,"context_line":"                net_id \u003d net[\u0027uuid\u0027]"},{"line_number":1064,"context_line":"                port \u003d self._create_port(network_id\u003dnet_id,"},{"line_number":1065,"context_line":"                                         client\u003dnet_client,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_fb2f2ef4","line":1062,"updated":"2015-02-03 16:03:09.000000000","message":"Same here, you probably should fast path through to the super if create_kwargs isn\u0027t set.","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"28879b801135e316b472ee07a8b55c057608bc1b","unresolved":false,"context_lines":[{"line_number":1059,"context_line":"                post_body[\u0027security_groups\u0027] \u003d security_groups_ids"},{"line_number":1060,"context_line":""},{"line_number":1061,"context_line":"            ports \u003d []"},{"line_number":1062,"context_line":"            for net in create_kwargs.get(\u0027networks\u0027):"},{"line_number":1063,"context_line":"                net_id \u003d net[\u0027uuid\u0027]"},{"line_number":1064,"context_line":"                port \u003d self._create_port(network_id\u003dnet_id,"},{"line_number":1065,"context_line":"                                         client\u003dnet_client,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da86d52c_6104484a","line":1062,"in_reply_to":"da86d52c_fb2f2ef4","updated":"2015-02-04 12:05:52.000000000","message":"If create_kwargs is empty and vnic_type is not None the default behaviour is to create a vnic if there is just one network and to fail if there is more than one.\nIn the next patch I\u0027m going to take the approach: If  create_kwargs is empty and vnic_type is not None list the networks of the tenants where router:external\u003dFalse and create port on each one.","commit_id":"ee45a3b17cceda0b1856473e2b7491cc37916fc1"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"fd468c070961bc5ab4a059ec88d78dcdb107c56c","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        if vnic_type:"},{"line_number":1058,"context_line":"            ports \u003d []"},{"line_number":1059,"context_line":"            networks \u003d []"},{"line_number":1060,"context_line":"            post_body \u003d {\u0027binding:vnic_type\u0027: vnic_type,"},{"line_number":1061,"context_line":"                         \u0027namestart\u0027: \u0027port-smoke\u0027}"},{"line_number":1062,"context_line":"            if create_kwargs:"},{"line_number":1063,"context_line":"                net_client \u003d create_kwargs.get(\"network_client\","}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_4c0f3437","line":1060,"updated":"2015-02-05 20:41:34.000000000","message":"Nit: Post body is a bit misleading as a variable name because this method doesn\u0027t just result in create_ports post. Maybe using something like create_port_body would be better.","commit_id":"2cfff3e8775c3da3603b5c03adbbfcd5b6ff31b8"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"8008c83311c7a359179b8bca888723a089df844a","unresolved":false,"context_lines":[{"line_number":1057,"context_line":"        if vnic_type:"},{"line_number":1058,"context_line":"            ports \u003d []"},{"line_number":1059,"context_line":"            networks \u003d []"},{"line_number":1060,"context_line":"            post_body \u003d {\u0027binding:vnic_type\u0027: vnic_type,"},{"line_number":1061,"context_line":"                         \u0027namestart\u0027: \u0027port-smoke\u0027}"},{"line_number":1062,"context_line":"            if create_kwargs:"},{"line_number":1063,"context_line":"                net_client \u003d create_kwargs.get(\"network_client\","}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_cc815bfc","line":1060,"in_reply_to":"da86d52c_4c0f3437","updated":"2015-02-06 01:41:50.000000000","message":"Done","commit_id":"2cfff3e8775c3da3603b5c03adbbfcd5b6ff31b8"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"fd468c070961bc5ab4a059ec88d78dcdb107c56c","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"            else:"},{"line_number":1080,"context_line":"                net_client \u003d self.network_client"},{"line_number":1081,"context_line":"            if not networks:"},{"line_number":1082,"context_line":"                networks \u003d net_client.list_networks(filters\u003d{"},{"line_number":1083,"context_line":"                    \u0027router:external\u0027: False})"},{"line_number":1084,"context_line":"            for net in networks:"},{"line_number":1085,"context_line":"                net_id \u003d net[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_4c7ad4bd","line":1082,"updated":"2015-02-05 20:41:34.000000000","message":"This step isn\u0027t exactly obvious to me. I think we should have a comment here explaining why setting the networks to all non-externable routed networks is the desired behavior if one isn\u0027t passed in.","commit_id":"2cfff3e8775c3da3603b5c03adbbfcd5b6ff31b8"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"8008c83311c7a359179b8bca888723a089df844a","unresolved":false,"context_lines":[{"line_number":1079,"context_line":"            else:"},{"line_number":1080,"context_line":"                net_client \u003d self.network_client"},{"line_number":1081,"context_line":"            if not networks:"},{"line_number":1082,"context_line":"                networks \u003d net_client.list_networks(filters\u003d{"},{"line_number":1083,"context_line":"                    \u0027router:external\u0027: False})"},{"line_number":1084,"context_line":"            for net in networks:"},{"line_number":1085,"context_line":"                net_id \u003d net[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":12,"id":"da86d52c_b7ef141d","line":1082,"in_reply_to":"da86d52c_4c7ad4bd","updated":"2015-02-06 01:41:50.000000000","message":"I\u0027ll change it so that if no network are passed and there is more than one network for the tenant the test will fail.I\u0027ll add a comment","commit_id":"2cfff3e8775c3da3603b5c03adbbfcd5b6ff31b8"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"6989521e7c08debbb13409e69097c718aaebcd8f","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"                net_client \u003d self.network_client"},{"line_number":1082,"context_line":"            if not networks:"},{"line_number":1083,"context_line":"                networks \u003d net_client.list_networks(filters\u003d{"},{"line_number":1084,"context_line":"                    \u0027router:external\u0027: False})"},{"line_number":1085,"context_line":"                self.assertEqual(1, len(networks),"},{"line_number":1086,"context_line":"                                 \"There is more than one\""},{"line_number":1087,"context_line":"                                 \" network for the tenant\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_c46894bc","line":1084,"updated":"2015-02-11 15:43:11.000000000","message":"This is the block that I feel really requires the comment. It\u0027s entirely non-obvious just by looking at this code why a non-externally routed network is used as the default case here. We should add a comment above this line explaining the rationale.\n\nMy other question here is isn\u0027t there a default network config option for this kind of situation? Why not just use that?","commit_id":"a39047ac8be6597cbf3864b3d0057672e0922487"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"9395609426e5eb34c921881cf6ee98876bf2ce35","unresolved":false,"context_lines":[{"line_number":1081,"context_line":"                net_client \u003d self.network_client"},{"line_number":1082,"context_line":"            if not networks:"},{"line_number":1083,"context_line":"                networks \u003d net_client.list_networks(filters\u003d{"},{"line_number":1084,"context_line":"                    \u0027router:external\u0027: False})"},{"line_number":1085,"context_line":"                self.assertEqual(1, len(networks),"},{"line_number":1086,"context_line":"                                 \"There is more than one\""},{"line_number":1087,"context_line":"                                 \" network for the tenant\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"da86d52c_067d461c","line":1084,"in_reply_to":"da86d52c_c46894bc","updated":"2015-02-11 19:10:07.000000000","message":"Thanks,I\u0027ll add comments.\nAs for the default network config - When there are no networks passed we need to mimic the default behaviour - i.e. to look up private network for the tenant. If there is more than one the client will probably fail so we should also fail.","commit_id":"a39047ac8be6597cbf3864b3d0057672e0922487"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"c982dac748a23e870ab7c15045a5fd8cc44c9bd1","unresolved":false,"context_lines":[{"line_number":161,"context_line":"            create_kwargs[\u0027networks\u0027] \u003d [{\u0027uuid\u0027: network.id}]"},{"line_number":162,"context_line":"        elif port:"},{"line_number":163,"context_line":"            create_kwargs[\u0027networks\u0027] \u003d [{\u0027port\u0027: port.id}]"},{"line_number":164,"context_line":"        else:"},{"line_number":165,"context_line":"            return"},{"line_number":166,"context_line":"        server \u003d self.create_server(name\u003dname, create_kwargs\u003dcreate_kwargs)"},{"line_number":167,"context_line":"        self.servers.append(server)"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_32119a52","line":164,"updated":"2014-12-21 08:53:44.000000000","message":"Do we want to return here, or should an error be raised? This seems like a case where the arguments given are incorrect and this shouldn\u0027t just \u0027return\u0027 silently.","commit_id":"071fb6fc88da3a281a3fa890ad741eb03daca9c1"},{"author":{"_account_id":12444,"name":"John Schwarz","email":"jschwarz@redhat.com","username":"jschwarz"},"change_message_id":"c982dac748a23e870ab7c15045a5fd8cc44c9bd1","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        For a freshly-booted VM with an IP address (\"port\") on a given"},{"line_number":341,"context_line":"            network:"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        - the Tempest host can ping the IP address.  This implies, but:q"},{"line_number":344,"context_line":"         does not guarantee (see the ssh check that follows), that the"},{"line_number":345,"context_line":"         VM has been assigned the correct IP address and has"},{"line_number":346,"context_line":"         connectivity to the Tempest host."}],"source_content_type":"text/x-python","patch_set":3,"id":"3a961159_d206961b","line":343,"updated":"2014-12-21 08:53:44.000000000","message":"nit: that \u0027:q\u0027 probably shouldn\u0027t be there.","commit_id":"071fb6fc88da3a281a3fa890ad741eb03daca9c1"},{"author":{"_account_id":12632,"name":"Kirill Shileev","email":"kshileev@cisco.com","username":"kshileev"},"change_message_id":"7317d00f449218a9232c0728f0a10ce988e3224b","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            self.assertIn(self.router.id,"},{"line_number":151,"context_line":"                          seen_router_ids)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _create_server(self, name, network\u003dNone, port\u003dNone):"},{"line_number":154,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":155,"context_line":"        self.keypairs[keypair[\u0027name\u0027]] \u003d keypair"},{"line_number":156,"context_line":"        security_groups \u003d [{\u0027name\u0027: self.security_group[\u0027name\u0027]}]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_dbfccd74","line":153,"updated":"2014-12-23 10:56:26.000000000","message":"I believe it\u0027s wrong logic. This way it\u0027s possible to call the function with network \u003d\u003d port \u003d\u003d None, thus failing creation. \nIt\u0027s better just rewrite create_kwargs[\u0027networks\u0027] when port is not None","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"51a65ba35495b5d81d4387268f14f96f324c81f1","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            self.assertIn(self.router.id,"},{"line_number":151,"context_line":"                          seen_router_ids)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"    def _create_server(self, name, network\u003dNone, port\u003dNone):"},{"line_number":154,"context_line":"        keypair \u003d self.create_keypair()"},{"line_number":155,"context_line":"        self.keypairs[keypair[\u0027name\u0027]] \u003d keypair"},{"line_number":156,"context_line":"        security_groups \u003d [{\u0027name\u0027: self.security_group[\u0027name\u0027]}]"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_9074df36","line":153,"in_reply_to":"3a961159_dbfccd74","updated":"2014-12-23 12:16:43.000000000","message":"Changed. Please review the next patch.","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"b72df09cbb64853e0335cc914b8711e30fcaabf5","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        Launch an instance with a pre-created port."},{"line_number":342,"context_line":"        vnic_type can be \u0027normal\u0027,\u0027direct\u0027 or \u0027macvtap\u0027"},{"line_number":343,"context_line":"        \"\"\""},{"line_number":344,"context_line":"        self._setup_network_and_servers("},{"line_number":345,"context_line":"            vnic_type\u003dvnic_type)"},{"line_number":346,"context_line":"        self.check_public_network_connectivity(should_connect\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_bbe2a1d2","line":343,"updated":"2014-12-23 11:13:07.000000000","message":"\"...and check connectivity\"","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"},{"author":{"_account_id":4727,"name":"Itzik Brown","email":"itzikb@redhat.com","username":"itzikb1"},"change_message_id":"51a65ba35495b5d81d4387268f14f96f324c81f1","unresolved":false,"context_lines":[{"line_number":340,"context_line":"        \"\"\""},{"line_number":341,"context_line":"        Launch an instance with a pre-created port."},{"line_number":342,"context_line":"        vnic_type can be \u0027normal\u0027,\u0027direct\u0027 or \u0027macvtap\u0027"},{"line_number":343,"context_line":"        \"\"\""},{"line_number":344,"context_line":"        self._setup_network_and_servers("},{"line_number":345,"context_line":"            vnic_type\u003dvnic_type)"},{"line_number":346,"context_line":"        self.check_public_network_connectivity(should_connect\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3a961159_507ef719","line":343,"in_reply_to":"3a961159_bbe2a1d2","updated":"2014-12-23 12:16:43.000000000","message":"Done","commit_id":"6c86c632965c95c9a197244ca13efab05bda3903"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"8d6583ee4f36918df45254ab9cd5f22699eeb760","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                                               msg\u003d\"after re-associate \""},{"line_number":400,"context_line":"                                                   \"floating ip\")"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @testtools.skipUnless(\u0027normal\u0027 in CONF.network.ports_vnic_types,"},{"line_number":403,"context_line":"                          \u0027Test should be run with vnic_type\u003dnormal\u0027)"},{"line_number":404,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":405,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_79a3c5ff","line":402,"updated":"2014-12-24 09:28:14.000000000","message":"This is duplicating a lot of code.\n\nIMO you could have just one test \"test_instance_with_preconfigured_ports\". Inside this test you would iterate over CONF.network.ports_vnic_types and call _boot_instance_with_port_and_check for each vnic_type you have.","commit_id":"edce5f576c8b0f255a432971b4109c35f90bb6f0"},{"author":{"_account_id":7350,"name":"Jordan Pittier","email":"jordan.pittier@gmail.com","username":"JordanP"},"change_message_id":"269de1a3a90297f90f3bc5e07faa89e0254b5fe3","unresolved":false,"context_lines":[{"line_number":399,"context_line":"                                               msg\u003d\"after re-associate \""},{"line_number":400,"context_line":"                                                   \"floating ip\")"},{"line_number":401,"context_line":""},{"line_number":402,"context_line":"    @testtools.skipUnless(\u0027normal\u0027 in CONF.network.ports_vnic_types,"},{"line_number":403,"context_line":"                          \u0027Test should be run with vnic_type\u003dnormal\u0027)"},{"line_number":404,"context_line":"    @test.attr(type\u003d\u0027smoke\u0027)"},{"line_number":405,"context_line":"    @test.services(\u0027compute\u0027, \u0027network\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a961159_59bfe9cf","line":402,"in_reply_to":"3a961159_79a3c5ff","updated":"2014-12-24 09:42:19.000000000","message":"Please don\u0027t consider my last comment. I get why you do it like this.","commit_id":"edce5f576c8b0f255a432971b4109c35f90bb6f0"}]}
