)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I6de4bf9f7deed215cf61c87c3ae3f4240982523e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAATH%2F%2FW00%3D","line":17,"updated":"2013-10-17 10:01:05.000000000","message":"pedantry: typo - netwokr","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"99d116895d30ef146af91f7257960d8826d56df9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implemantaiton into \"*_nova\" for default use"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2FQrE%3D","line":16,"updated":"2013-11-12 10:17:18.000000000","message":"s/functins/functions","commit_id":"12d24380b52903314e364d0efe1bd7d5d7278abf"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"99d116895d30ef146af91f7257960d8826d56df9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implemantaiton into \"*_nova\" for default use"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2FQqM%3D","line":17,"updated":"2013-11-12 10:17:18.000000000","message":"s/netwokr_client/network_client","commit_id":"12d24380b52903314e364d0efe1bd7d5d7278abf"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"99d116895d30ef146af91f7257960d8826d56df9","unresolved":false,"context_lines":[{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implemantaiton into \"*_nova\" for default use"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I6de4bf9f7deed215cf61c87c3ae3f4240982523e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"AAAATn%2F%2FQq0%3D","line":19,"updated":"2013-11-12 10:17:18.000000000","message":"s/implemantaiton/implementation","commit_id":"12d24380b52903314e364d0efe1bd7d5d7278abf"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yair Fried \u003cyfried@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-17 15:51:43 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added support for security_groups under neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"the methods"},{"line_number":10,"context_line":"NetworkScenarioTest._create_security_group()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAATn%2F%2B7%2BI%3D","line":7,"updated":"2013-11-18 11:35:29.000000000","message":"Suggestion: added -\u003e Adding or Adds or just nothing\n\nPerhaps consider\n\"Support Neutron security groups in scenario testing\"","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"66551a5cb9c1e25a705e6ec7c8bf74ac4989ebc5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Yair Fried \u003cyfried@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-11-17 15:51:43 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"added support for security_groups under neutron"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"the methods"},{"line_number":10,"context_line":"NetworkScenarioTest._create_security_group()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAATn%2F%2Bye0%3D","line":7,"in_reply_to":"AAAATn%2F%2B7%2BI%3D","updated":"2013-11-20 06:50:53.000000000","message":"Done","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"***no default value for client - must be explicitly chosen!!!"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"moved old implemantaiton into \"*_nova\" for default use"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAATn%2F%2B79o%3D","line":19,"updated":"2013-11-18 11:35:29.000000000","message":"I don\u0027t think the commit message is the right place to inform other developers you\u0027ve changed the interface of a method, but this is just my opinion.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"a314e005b9ed8ca9372df62e68ac6ea30f750482","unresolved":false,"context_lines":[{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"***no default value for client - must be explicitly chosen!!!"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"moved old implemantaiton into \"*_nova\" for default use"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAATn%2F%2B7qk%3D","line":19,"in_reply_to":"AAAATn%2F%2B79o%3D","updated":"2013-11-18 12:50:15.000000000","message":"Or to be more precise I meant that there should be other places, notwithstanding that something like that should me mentioned in the commit message too.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"***no default value for client - must be explicitly chosen!!!"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"moved old implemantaiton into \"*_nova\" for default use"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"Change-Id: I6de4bf9f7deed215cf61c87c3ae3f4240982523e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"AAAATn%2F%2B79k%3D","line":21,"updated":"2013-11-18 11:35:29.000000000","message":"impleamantaiton -\u003e implementation","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support Neutron security groups in scenario testing"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"the methods"},{"line_number":10,"context_line":"NetworkScenarioTest._create_security_group()"},{"line_number":11,"context_line":"and"},{"line_number":12,"context_line":"NetworkScenarioTest.create_loginable_secgroup_rule()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BWjQ%3D","line":9,"updated":"2013-11-27 01:58:58.000000000","message":"Minor nit - capital T on the.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Support Neutron security groups in scenario testing"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"the methods"},{"line_number":10,"context_line":"NetworkScenarioTest._create_security_group()"},{"line_number":11,"context_line":"and"},{"line_number":12,"context_line":"NetworkScenarioTest.create_loginable_secgroup_rule()"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BV1M%3D","line":9,"in_reply_to":"AAAATn%2F%2BWjQ%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":10,"context_line":"NetworkScenarioTest._create_security_group()"},{"line_number":11,"context_line":"and"},{"line_number":12,"context_line":"NetworkScenarioTest.create_loginable_secgroup_rule()"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BWjM%3D","line":13,"updated":"2013-11-27 01:58:58.000000000","message":"excess blank line here..","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":10,"context_line":"NetworkScenarioTest._create_security_group()"},{"line_number":11,"context_line":"and"},{"line_number":12,"context_line":"NetworkScenarioTest.create_loginable_secgroup_rule()"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BV1I%3D","line":13,"in_reply_to":"AAAATn%2F%2BWjM%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BWjI%3D","line":16,"updated":"2013-11-27 01:58:58.000000000","message":"\u0027Added\u0027 and \u0027functions\u0027","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BV1E%3D","line":16,"in_reply_to":"AAAATn%2F%2BWjI%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BWjE%3D","line":17,"updated":"2013-11-27 01:58:58.000000000","message":"\u0027network_client\u0027.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":14,"context_line":"use the nova client by default."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BV1A%3D","line":17,"in_reply_to":"AAAATn%2F%2BWjE%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"adds generic method create_secgroup \u0026 rule"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BWi4%3D","line":19,"updated":"2013-11-27 01:58:58.000000000","message":"Capital M on moved, \u0027usage\u0027 not \u0027useage\u0027, and missing full stop.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":16,"context_line":"added helper functins \"*_neutron\" that use the neutron (network) client"},{"line_number":17,"context_line":"by parsing the keyword client\u003dself.netwokr_client."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"adds generic method create_secgroup \u0026 rule"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BV04%3D","line":19,"in_reply_to":"AAAATn%2F%2BWi4%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"adds generic method create_secgroup \u0026 rule"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"added methods to scenario/manager to allow for generic creation of"},{"line_number":24,"context_line":"neutron secgroup and rules as existing methods only create a segcroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BWiw%3D","line":21,"updated":"2013-11-27 01:58:58.000000000","message":"Capital A on adds, and missing full stop.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"moved old implementation into \"*_nova\" for old useage"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"adds generic method create_secgroup \u0026 rule"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"added methods to scenario/manager to allow for generic creation of"},{"line_number":24,"context_line":"neutron secgroup and rules as existing methods only create a segcroup"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BV00%3D","line":21,"in_reply_to":"AAAATn%2F%2BWiw%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"added methods to scenario/manager to allow for generic creation of"},{"line_number":24,"context_line":"neutron secgroup and rules as existing methods only create a segcroup"},{"line_number":25,"context_line":"with login rules (incoming ping and ssh)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I6de4bf9f7deed215cf61c87c3ae3f4240982523e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BWio%3D","line":25,"updated":"2013-11-27 01:58:58.000000000","message":"\u0027Added\u0027, \u0027secgroup\u0027 not \u0027segcroup\u0027, and a missing full stop.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"added methods to scenario/manager to allow for generic creation of"},{"line_number":24,"context_line":"neutron secgroup and rules as existing methods only create a segcroup"},{"line_number":25,"context_line":"with login rules (incoming ping and ssh)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"Change-Id: I6de4bf9f7deed215cf61c87c3ae3f4240982523e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"AAAATn%2F%2BV0w%3D","line":25,"in_reply_to":"AAAATn%2F%2BWio%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"}],"tempest/api/network/common.py":[{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":105,"context_line":"class DeletableSecurityGroupRule(DeletableResource):"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __str__(self):"},{"line_number":108,"context_line":"        return \u0027\u003c%s id\u003d\"%s\"\u003e\u0027 % (self.__class__.__name__, self.id)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def delete(self):"},{"line_number":111,"context_line":"        self.client.delete_security_group_rule(self.id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWic%3D","line":108,"updated":"2013-11-27 01:58:58.000000000","message":"This looks like a __repr__, rather than a __str__.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":105,"context_line":"class DeletableSecurityGroupRule(DeletableResource):"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    def __str__(self):"},{"line_number":108,"context_line":"        return \u0027\u003c%s id\u003d\"%s\"\u003e\u0027 % (self.__class__.__name__, self.id)"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"    def delete(self):"},{"line_number":111,"context_line":"        self.client.delete_security_group_rule(self.id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV1U%3D","line":108,"in_reply_to":"AAAATn%2F%2BWic%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"}],"tempest/scenario/manager.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        if client is self.network_client:"},{"line_number":356,"context_line":"            rules \u003d self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":357,"context_line":"                                                                 secgroup_id)"},{"line_number":358,"context_line":"            return rules"},{"line_number":359,"context_line":"        elif client is None:"},{"line_number":360,"context_line":"            client \u003d self.compute_client"},{"line_number":361,"context_line":"        if secgroup_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FWz8%3D","line":358,"updated":"2013-10-17 10:01:05.000000000","message":"you might be able to merge the above two statements","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        if client is self.network_client:"},{"line_number":356,"context_line":"            rules \u003d self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":357,"context_line":"                                                                 secgroup_id)"},{"line_number":358,"context_line":"            return rules"},{"line_number":359,"context_line":"        elif client is None:"},{"line_number":360,"context_line":"            client \u003d self.compute_client"},{"line_number":361,"context_line":"        if secgroup_id is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNys%3D","line":358,"in_reply_to":"AAAATH%2F%2FWz8%3D","updated":"2013-10-21 10:56:32.000000000","message":"Done","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            return rules"},{"line_number":359,"context_line":"        elif client is None:"},{"line_number":360,"context_line":"            client \u003d self.compute_client"},{"line_number":361,"context_line":"        if secgroup_id is None:"},{"line_number":362,"context_line":"            sgs \u003d client.security_groups.list()"},{"line_number":363,"context_line":"            for sg in sgs:"},{"line_number":364,"context_line":"                if sg.name \u003d\u003d \u0027default\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FW0M%3D","line":361,"updated":"2013-10-17 10:01:05.000000000","message":"from a readability/maintainability perspective it might make sense move the rest of this method in a _create_loginable_secgroup_rule_nova method","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":358,"context_line":"            return rules"},{"line_number":359,"context_line":"        elif client is None:"},{"line_number":360,"context_line":"            client \u003d self.compute_client"},{"line_number":361,"context_line":"        if secgroup_id is None:"},{"line_number":362,"context_line":"            sgs \u003d client.security_groups.list()"},{"line_number":363,"context_line":"            for sg in sgs:"},{"line_number":364,"context_line":"                if sg.name \u003d\u003d \u0027default\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNqg%3D","line":361,"in_reply_to":"AAAATH%2F%2FW0M%3D","updated":"2013-10-21 10:56:32.000000000","message":"Done","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":507,"context_line":"            # use neutron create_secgroup"},{"line_number":508,"context_line":"            secgroup \u003d self._create_security_group_neutorn(client,"},{"line_number":509,"context_line":"                                                           namestart,"},{"line_number":510,"context_line":"                                                           tenant_id)"},{"line_number":511,"context_line":"            return secgroup"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        elif client is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FW0A%3D","line":510,"updated":"2013-10-17 10:01:05.000000000","message":"you might be able to merge the above two statements","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":507,"context_line":"            # use neutron create_secgroup"},{"line_number":508,"context_line":"            secgroup \u003d self._create_security_group_neutorn(client,"},{"line_number":509,"context_line":"                                                           namestart,"},{"line_number":510,"context_line":"                                                           tenant_id)"},{"line_number":511,"context_line":"            return secgroup"},{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        elif client is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNyg%3D","line":510,"in_reply_to":"AAAATH%2F%2FW0A%3D","updated":"2013-10-21 10:56:32.000000000","message":"Done","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        elif client is None:"},{"line_number":514,"context_line":"            client \u003d self.compute_client"},{"line_number":515,"context_line":"        # Create security group"},{"line_number":516,"context_line":"        sg_name \u003d rand_name(namestart)"},{"line_number":517,"context_line":"        sg_desc \u003d sg_name + \" description\""},{"line_number":518,"context_line":"        secgroup \u003d client.security_groups.create(sg_name, sg_desc)"},{"line_number":519,"context_line":"        self.assertEqual(secgroup.name, sg_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FW0E%3D","line":516,"updated":"2013-10-17 10:01:05.000000000","message":"same comment as above regarding readability","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":513,"context_line":"        elif client is None:"},{"line_number":514,"context_line":"            client \u003d self.compute_client"},{"line_number":515,"context_line":"        # Create security group"},{"line_number":516,"context_line":"        sg_name \u003d rand_name(namestart)"},{"line_number":517,"context_line":"        sg_desc \u003d sg_name + \" description\""},{"line_number":518,"context_line":"        secgroup \u003d client.security_groups.create(sg_name, sg_desc)"},{"line_number":519,"context_line":"        self.assertEqual(secgroup.name, sg_name)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNow%3D","line":516,"in_reply_to":"AAAATH%2F%2FW0E%3D","updated":"2013-10-21 10:56:32.000000000","message":"Done","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":651,"context_line":"            \u0027Auth failure in connecting to %s@%s via ssh\u0027 %"},{"line_number":652,"context_line":"            (username, ip_address))"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    def _create_security_group_neutorn(self, client\u003dNone,"},{"line_number":655,"context_line":"                                       namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":656,"context_line":"                                       tenant_id\u003dNone):"},{"line_number":657,"context_line":"        # Create security group"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FWz4%3D","line":654,"updated":"2013-10-17 10:01:05.000000000","message":"typo: neutorn\n\nI do that too all the time","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":651,"context_line":"            \u0027Auth failure in connecting to %s@%s via ssh\u0027 %"},{"line_number":652,"context_line":"            (username, ip_address))"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"    def _create_security_group_neutorn(self, client\u003dNone,"},{"line_number":655,"context_line":"                                       namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":656,"context_line":"                                       tenant_id\u003dNone):"},{"line_number":657,"context_line":"        # Create security group"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNyA%3D","line":654,"in_reply_to":"AAAATH%2F%2FWz4%3D","updated":"2013-10-21 10:56:32.000000000","message":"Done","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":674,"context_line":"            tenant_id\u003dtenant_id,"},{"line_number":675,"context_line":"            sec_tenant\u003dsecgroup.tenant_id"},{"line_number":676,"context_line":"        )"},{"line_number":677,"context_line":"        self.assertEqual(tenant_id, secgroup.tenant_id, msg)"},{"line_number":678,"context_line":"        self.assertEqual(secgroup.description, sg_desc)"},{"line_number":679,"context_line":"        self.set_resource(sg_name, secgroup)"},{"line_number":680,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FWzM%3D","line":677,"updated":"2013-10-17 10:01:05.000000000","message":"curiosity: why some assertion need a custom error message?","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":674,"context_line":"            tenant_id\u003dtenant_id,"},{"line_number":675,"context_line":"            sec_tenant\u003dsecgroup.tenant_id"},{"line_number":676,"context_line":"        )"},{"line_number":677,"context_line":"        self.assertEqual(tenant_id, secgroup.tenant_id, msg)"},{"line_number":678,"context_line":"        self.assertEqual(secgroup.description, sg_desc)"},{"line_number":679,"context_line":"        self.set_resource(sg_name, secgroup)"},{"line_number":680,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNx8%3D","line":677,"in_reply_to":"AAAATH%2F%2FWzM%3D","updated":"2013-10-21 10:56:32.000000000","message":"Done","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        # Add rules to the security group"},{"line_number":682,"context_line":"        rules \u003d self.create_loginable_secgroup_rule(secgroup_id\u003dsecgroup.id,"},{"line_number":683,"context_line":"                                                    client\u003dclient)"},{"line_number":684,"context_line":"        for rule in rules:"},{"line_number":685,"context_line":"            msg \u003d \u0027tenant-id: {tenant_id}, rule_tenant: {rule_tenant}\u0027.format("},{"line_number":686,"context_line":"                tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FWy8%3D","line":683,"updated":"2013-10-17 10:01:05.000000000","message":"why don\u0027t pass the security group too here? (I think it\u0027s safe to call directly create_loginabler_secgroup_rule_neutron","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":680,"context_line":""},{"line_number":681,"context_line":"        # Add rules to the security group"},{"line_number":682,"context_line":"        rules \u003d self.create_loginable_secgroup_rule(secgroup_id\u003dsecgroup.id,"},{"line_number":683,"context_line":"                                                    client\u003dclient)"},{"line_number":684,"context_line":"        for rule in rules:"},{"line_number":685,"context_line":"            msg \u003d \u0027tenant-id: {tenant_id}, rule_tenant: {rule_tenant}\u0027.format("},{"line_number":686,"context_line":"                tenant_id\u003dtenant_id,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNv8%3D","line":683,"in_reply_to":"AAAATH%2F%2FWy8%3D","updated":"2013-10-21 10:56:32.000000000","message":"can you please clarify?","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"b1ee70777221fd4025e704a3e0a2fb3c56d487a1","unresolved":false,"context_lines":[{"line_number":701,"context_line":"            for sg in sgs:"},{"line_number":702,"context_line":"                if sg.name \u003d\u003d \u0027default\u0027:"},{"line_number":703,"context_line":"                    secgroup_id \u003d sg.id"},{"line_number":704,"context_line":"        secgroup \u003d self.network_client.show_security_group(secgroup_id)"},{"line_number":705,"context_line":"        secgroup \u003d net_common.DeletableSecurityGroup("},{"line_number":706,"context_line":"            client\u003dself.network_client,"},{"line_number":707,"context_line":"            **secgroup[\u0027security_group\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FWzE%3D","line":704,"updated":"2013-10-17 10:01:05.000000000","message":"you should do the above only is secgroup is none?","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2f5bff43663e14cdfd717e305a573b424456087a","unresolved":false,"context_lines":[{"line_number":701,"context_line":"            for sg in sgs:"},{"line_number":702,"context_line":"                if sg.name \u003d\u003d \u0027default\u0027:"},{"line_number":703,"context_line":"                    secgroup_id \u003d sg.id"},{"line_number":704,"context_line":"        secgroup \u003d self.network_client.show_security_group(secgroup_id)"},{"line_number":705,"context_line":"        secgroup \u003d net_common.DeletableSecurityGroup("},{"line_number":706,"context_line":"            client\u003dself.network_client,"},{"line_number":707,"context_line":"            **secgroup[\u0027security_group\u0027])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FNxQ%3D","line":704,"in_reply_to":"AAAATH%2F%2FWzE%3D","updated":"2013-10-21 10:56:32.000000000","message":"Done","commit_id":"d5276d21e272ad97ac6e8c65e082f3cd53830869"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"7df01c07681a9f17c7cec4992b8632e7e08400e8","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":355,"context_line":"        if client is self.network_client:"},{"line_number":356,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":357,"context_line":"                                                                secgroup_id"},{"line_number":358,"context_line":"                                                                )"},{"line_number":359,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATX%2F%2F%2FDw%3D","line":356,"updated":"2013-10-23 09:28:18.000000000","message":"line 356 may not need return, or both line 356 and 361 need return","commit_id":"449266508347b8803cf49b6a36cf938703c979dc"},{"author":{"_account_id":7139,"name":"Zhi Kun Liu","username":"zhikunliu","inactive":true},"change_message_id":"7df01c07681a9f17c7cec4992b8632e7e08400e8","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                                                                secgroup_id"},{"line_number":358,"context_line":"                                                                )"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            client \u003d self.compute_client"},{"line_number":361,"context_line":"            self._create_loginable_secgroup_rule_nova(secgroup_id)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def _create_loginable_secgroup_rule_nova(self, secgroup_id\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATX%2F%2F%2FD0%3D","line":360,"updated":"2013-10-23 09:28:18.000000000","message":"line 360 could be removed","commit_id":"449266508347b8803cf49b6a36cf938703c979dc"},{"author":{"_account_id":6983,"name":"YangLei","email":"iamhappg@aliyun.com","username":"YangLei"},"change_message_id":"95509390708c4877ff4f9cac97e96229a8d2cc90","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":355,"context_line":"        if client is self.network_client:"},{"line_number":356,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":357,"context_line":"                                                                secgroup_id"},{"line_number":358,"context_line":"                                                                )"},{"line_number":359,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F%2FOc%3D","line":356,"updated":"2013-10-24 07:41:35.000000000","message":"Why do you input \"client\" as argument?","commit_id":"5b8e8eb99db212d6910e3fc20145ea52b980cd8b"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"ad6f553a8ef3125450e4b627c471e64d0c4d1fb2","unresolved":false,"context_lines":[{"line_number":353,"context_line":""},{"line_number":354,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":355,"context_line":"        if client is self.network_client:"},{"line_number":356,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":357,"context_line":"                                                                secgroup_id"},{"line_number":358,"context_line":"                                                                )"},{"line_number":359,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F2r4%3D","line":356,"in_reply_to":"AAAATn%2F%2F%2FOc%3D","updated":"2013-10-27 06:29:00.000000000","message":"Done","commit_id":"5b8e8eb99db212d6910e3fc20145ea52b980cd8b"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"7e9b76195a063b0842e078b5fecb65e5d5476c46","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                cls.config.identity.password,"},{"line_number":508,"context_line":"                cls.config.identity.tenant_name).tenant_id"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def _create_security_group(self, client\u003dNone, namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":511,"context_line":"                               tenant_id\u003dNone):"},{"line_number":512,"context_line":"        if client is self.network_client:"},{"line_number":513,"context_line":"            # use neutron create_secgroup"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FRpY%3D","line":510,"updated":"2013-11-11 21:24:28.000000000","message":"so I\u0027m a little concerned with this bit where we have a magic patch that flows between neutron / nova automagically, for the following reason.\n\nIt means that we drop testing the nova network api with neutron back end, but that\u0027s a completely valid through path for people when they are migrating from nova-network to scenario.\n\nSo I\u0027d be ok with this patch if this function was removed, and all callers needed to explicitly call the neutron or nova calls in their code (and neutron jobs should really run once with nova calls and a different time with neutron calls).","commit_id":"12d24380b52903314e364d0efe1bd7d5d7278abf"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"8cd8bd5ce84d5681c4174233424bad418dc8ecf9","unresolved":false,"context_lines":[{"line_number":507,"context_line":"                cls.config.identity.password,"},{"line_number":508,"context_line":"                cls.config.identity.tenant_name).tenant_id"},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"    def _create_security_group(self, client\u003dNone, namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":511,"context_line":"                               tenant_id\u003dNone):"},{"line_number":512,"context_line":"        if client is self.network_client:"},{"line_number":513,"context_line":"            # use neutron create_secgroup"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FQbs%3D","line":510,"in_reply_to":"AAAATn%2F%2FRpY%3D","updated":"2013-11-12 06:38:23.000000000","message":"what if there was no default client for the method?\nyou will have to explicitly choose between nova/neutron as the client","commit_id":"12d24380b52903314e364d0efe1bd7d5d7278abf"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d2e3d6ab79deb0554aa9707aea3928eb77067eb5","unresolved":false,"context_lines":[{"line_number":361,"context_line":"            raise exceptions.TimeoutException(message)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":364,"context_line":"        if client is self.network_client:"},{"line_number":365,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":366,"context_line":"                                                                secgroup_id"},{"line_number":367,"context_line":"                                                                )"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7oU%3D","line":364,"updated":"2013-11-18 13:25:52.000000000","message":"While this behavior might be as desired here, equality testing (\u003d\u003d) is generally preferable to identity testing (is) to allow polymorphic (between different object) comparisons.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                                                                secgroup_id"},{"line_number":367,"context_line":"                                                                )"},{"line_number":368,"context_line":"        else:"},{"line_number":369,"context_line":"            return self._create_loginable_secgroup_rule_nova(secgroup_id)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def _create_loginable_secgroup_rule_nova(self, secgroup_id\u003dNone):"},{"line_number":372,"context_line":"        client \u003d self.compute_client"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7%2FE%3D","line":369,"updated":"2013-11-18 11:35:29.000000000","message":"I would keep the setting\n\nclient \u003d self.compute_client if client is None for making sure there\u0027s no change for people writing tests for nova-network.\n\nI\u0027ve seen the change you\u0027ve made in test_large_ops to reflect that change in this routine, but I reckon it wouldn\u0027t hurt ensuring things stay backward compatible as much as possible.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"9bf9d49b4f9f575bb788bdd4f12befe47ca1d266","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                                                                secgroup_id"},{"line_number":367,"context_line":"                                                                )"},{"line_number":368,"context_line":"        else:"},{"line_number":369,"context_line":"            return self._create_loginable_secgroup_rule_nova(secgroup_id)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def _create_loginable_secgroup_rule_nova(self, secgroup_id\u003dNone):"},{"line_number":372,"context_line":"        client \u003d self.compute_client"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7pA%3D","line":369,"in_reply_to":"AAAATn%2F%2B7%2FE%3D","updated":"2013-11-18 13:10:20.000000000","message":"AFAIK sdague was against that, intending to force future usage to activly chose between 2 options","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d2e3d6ab79deb0554aa9707aea3928eb77067eb5","unresolved":false,"context_lines":[{"line_number":519,"context_line":"    def _create_security_group(self, client, namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":520,"context_line":"                               tenant_id\u003dNone):"},{"line_number":521,"context_line":"        if isinstance(client, neutronclient.v2_0.client.Client):"},{"line_number":522,"context_line":"            # use neutron create_secgroup"},{"line_number":523,"context_line":"            return self._create_security_group_neutron(namestart\u003dnamestart,"},{"line_number":524,"context_line":"                                                       tenant_id\u003dtenant_id)"},{"line_number":525,"context_line":"        # TODO(yfried): get a common base class to compare against compute"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7ms%3D","line":522,"updated":"2013-11-18 13:25:52.000000000","message":"This comment (and the line on 528) is not necessary given that the name of the method being called clearly indicates what is going on.  Comments should explain things that aren\u0027t obvious from the code so that the effort in maintaining them is justified.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"66551a5cb9c1e25a705e6ec7c8bf74ac4989ebc5","unresolved":false,"context_lines":[{"line_number":519,"context_line":"    def _create_security_group(self, client, namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":520,"context_line":"                               tenant_id\u003dNone):"},{"line_number":521,"context_line":"        if isinstance(client, neutronclient.v2_0.client.Client):"},{"line_number":522,"context_line":"            # use neutron create_secgroup"},{"line_number":523,"context_line":"            return self._create_security_group_neutron(namestart\u003dnamestart,"},{"line_number":524,"context_line":"                                                       tenant_id\u003dtenant_id)"},{"line_number":525,"context_line":"        # TODO(yfried): get a common base class to compare against compute"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B6vY%3D","line":522,"in_reply_to":"AAAATn%2F%2B7ms%3D","updated":"2013-11-20 06:50:53.000000000","message":"Done","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d2e3d6ab79deb0554aa9707aea3928eb77067eb5","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            # use neutron create_secgroup"},{"line_number":523,"context_line":"            return self._create_security_group_neutron(namestart\u003dnamestart,"},{"line_number":524,"context_line":"                                                       tenant_id\u003dtenant_id)"},{"line_number":525,"context_line":"        # TODO(yfried): get a common base class to compare against compute"},{"line_number":526,"context_line":"        # client, to catch v2 client also"},{"line_number":527,"context_line":"        elif isinstance(client, novaclient.v1_1.client.Client):"},{"line_number":528,"context_line":"            # use nova create_secgroup"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7ng%3D","line":525,"updated":"2013-11-18 13:25:52.000000000","message":"Why not just use multiple isinstance calls?  i.e. isinstance(v1) or isinstance(v2)?","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"66551a5cb9c1e25a705e6ec7c8bf74ac4989ebc5","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            # use neutron create_secgroup"},{"line_number":523,"context_line":"            return self._create_security_group_neutron(namestart\u003dnamestart,"},{"line_number":524,"context_line":"                                                       tenant_id\u003dtenant_id)"},{"line_number":525,"context_line":"        # TODO(yfried): get a common base class to compare against compute"},{"line_number":526,"context_line":"        # client, to catch v2 client also"},{"line_number":527,"context_line":"        elif isinstance(client, novaclient.v1_1.client.Client):"},{"line_number":528,"context_line":"            # use nova create_secgroup"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B6vc%3D","line":525,"in_reply_to":"AAAATn%2F%2B7ng%3D","updated":"2013-11-20 06:50:53.000000000","message":"Done","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d2e3d6ab79deb0554aa9707aea3928eb77067eb5","unresolved":false,"context_lines":[{"line_number":530,"context_line":"                                                    namestart\u003dnamestart,"},{"line_number":531,"context_line":"                                                    tenant_id\u003dtenant_id)"},{"line_number":532,"context_line":"        else:"},{"line_number":533,"context_line":"            raise ValueError()"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    def _create_network(self, tenant_id, namestart\u003d\u0027network-smoke-\u0027):"},{"line_number":536,"context_line":"        name \u003d rand_name(namestart)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7ns%3D","line":533,"updated":"2013-11-18 13:25:52.000000000","message":"Please provide a reasonable error message to the exception, something like \u0027A valid nova or neutron client instance is required\u0027.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"66551a5cb9c1e25a705e6ec7c8bf74ac4989ebc5","unresolved":false,"context_lines":[{"line_number":530,"context_line":"                                                    namestart\u003dnamestart,"},{"line_number":531,"context_line":"                                                    tenant_id\u003dtenant_id)"},{"line_number":532,"context_line":"        else:"},{"line_number":533,"context_line":"            raise ValueError()"},{"line_number":534,"context_line":""},{"line_number":535,"context_line":"    def _create_network(self, tenant_id, namestart\u003d\u0027network-smoke-\u0027):"},{"line_number":536,"context_line":"        name \u003d rand_name(namestart)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B6vg%3D","line":533,"in_reply_to":"AAAATn%2F%2B7ns%3D","updated":"2013-11-20 06:50:53.000000000","message":"Done","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                if sg.name \u003d\u003d \u0027default\u0027:"},{"line_number":716,"context_line":"                    secgroup_id \u003d sg.id"},{"line_number":717,"context_line":"        if secgroup is None:"},{"line_number":718,"context_line":"            secgroup \u003d self.network_client.show_security_group(secgroup_id)"},{"line_number":719,"context_line":"        secgroup \u003d net_common.DeletableSecurityGroup("},{"line_number":720,"context_line":"            client\u003dself.network_client,"},{"line_number":721,"context_line":"            **secgroup[\u0027security_group\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B8Bs%3D","line":718,"updated":"2013-11-18 11:35:29.000000000","message":"What would happen if secgroup_id is None but secgroup is not None, and secgroup.id !\u003d secgroup_id ?","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"9bf9d49b4f9f575bb788bdd4f12befe47ca1d266","unresolved":false,"context_lines":[{"line_number":715,"context_line":"                if sg.name \u003d\u003d \u0027default\u0027:"},{"line_number":716,"context_line":"                    secgroup_id \u003d sg.id"},{"line_number":717,"context_line":"        if secgroup is None:"},{"line_number":718,"context_line":"            secgroup \u003d self.network_client.show_security_group(secgroup_id)"},{"line_number":719,"context_line":"        secgroup \u003d net_common.DeletableSecurityGroup("},{"line_number":720,"context_line":"            client\u003dself.network_client,"},{"line_number":721,"context_line":"            **secgroup[\u0027security_group\u0027])"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7mw%3D","line":718,"in_reply_to":"AAAATn%2F%2B8Bs%3D","updated":"2013-11-18 13:10:20.000000000","message":"if secgroup is not None then secgroup_id is ignored","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d2e3d6ab79deb0554aa9707aea3928eb77067eb5","unresolved":false,"context_lines":[{"line_number":740,"context_line":"            ruleset.update(security_group_id\u003dsecgroup.id)"},{"line_number":741,"context_line":"            ruleset.update(tenant_id\u003dsecgroup.tenant_id)"},{"line_number":742,"context_line":"            for r_direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":743,"context_line":"                try:"},{"line_number":744,"context_line":"                    ruleset.update({\u0027direction\u0027: r_direction})"},{"line_number":745,"context_line":"                    body \u003d dict(security_group_rule\u003ddict(ruleset))"},{"line_number":746,"context_line":"                    result \u003d self.network_client.create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7h0%3D","line":743,"updated":"2013-11-18 13:25:52.000000000","message":"Please limit the scope of a try block to lines that are expected to trigger an exception so as to make it obvious to someone reading the code.  In this case, only line 746-747 will throw the NeutronClientException.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"66551a5cb9c1e25a705e6ec7c8bf74ac4989ebc5","unresolved":false,"context_lines":[{"line_number":740,"context_line":"            ruleset.update(security_group_id\u003dsecgroup.id)"},{"line_number":741,"context_line":"            ruleset.update(tenant_id\u003dsecgroup.tenant_id)"},{"line_number":742,"context_line":"            for r_direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":743,"context_line":"                try:"},{"line_number":744,"context_line":"                    ruleset.update({\u0027direction\u0027: r_direction})"},{"line_number":745,"context_line":"                    body \u003d dict(security_group_rule\u003ddict(ruleset))"},{"line_number":746,"context_line":"                    result \u003d self.network_client.create_security_group_rule("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2Byfw%3D","line":743,"in_reply_to":"AAAATn%2F%2B7h0%3D","updated":"2013-11-20 06:50:53.000000000","message":"I agree regarding first lines, but there\u0027s no need to assert or log rule if exception was caught.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":744,"context_line":"                    ruleset.update({\u0027direction\u0027: r_direction})"},{"line_number":745,"context_line":"                    body \u003d dict(security_group_rule\u003ddict(ruleset))"},{"line_number":746,"context_line":"                    result \u003d self.network_client.create_security_group_rule("},{"line_number":747,"context_line":"                        body\u003dbody)"},{"line_number":748,"context_line":"                    sg_rule \u003d net_common.DeletableSecurityGroupRule("},{"line_number":749,"context_line":"                        client\u003dself.network_client,"},{"line_number":750,"context_line":"                        **result[\u0027security_group_rule\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B8A4%3D","line":747,"updated":"2013-11-18 11:35:29.000000000","message":"I would consider leveraging the bulk way of creating security group rules (api tests should validate cases for single rule/bulk rules work properly)","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":752,"context_line":"                    self.assertEqual(r_direction, sg_rule.direction)"},{"line_number":753,"context_line":"                    self.set_resource(sg_rule.id, sg_rule)"},{"line_number":754,"context_line":"                    rules.append(sg_rule)"},{"line_number":755,"context_line":"                except exc.NeutronClientException as ex:"},{"line_number":756,"context_line":"                    # if rule already exist - skip rule and continue"},{"line_number":757,"context_line":"                    if not (ex.status_code is 409 and \u0027Security group rule\u0027"},{"line_number":758,"context_line":"                            \u0027 already exists\u0027 in ex.message):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7%2Fc%3D","line":755,"updated":"2013-11-18 11:35:29.000000000","message":"nit: this error will generate anyway a trace in q-svc.log\n\nwe might fix q-svc.log to remove the trace and log with warn or info level for this case, but perhaps this routine might instead fetch the rules for the security group and push them only if missing (and maybe even store a flag locally to note that the rules for making secgroup.id loginable has been pushed)","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"9bf9d49b4f9f575bb788bdd4f12befe47ca1d266","unresolved":false,"context_lines":[{"line_number":752,"context_line":"                    self.assertEqual(r_direction, sg_rule.direction)"},{"line_number":753,"context_line":"                    self.set_resource(sg_rule.id, sg_rule)"},{"line_number":754,"context_line":"                    rules.append(sg_rule)"},{"line_number":755,"context_line":"                except exc.NeutronClientException as ex:"},{"line_number":756,"context_line":"                    # if rule already exist - skip rule and continue"},{"line_number":757,"context_line":"                    if not (ex.status_code is 409 and \u0027Security group rule\u0027"},{"line_number":758,"context_line":"                            \u0027 already exists\u0027 in ex.message):"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7mY%3D","line":755,"in_reply_to":"AAAATn%2F%2B7%2Fc%3D","updated":"2013-11-18 13:10:20.000000000","message":"maybe on a later patch? since it is a none blocker?","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"45b471897d0b6c572188afedaf4a15b779299936","unresolved":false,"context_lines":[{"line_number":361,"context_line":"            raise exceptions.TimeoutException(message)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":364,"context_line":"        if isinstance(client, self.network_client):"},{"line_number":365,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":366,"context_line":"                                                                secgroup_id)"},{"line_number":367,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2ByNU%3D","line":364,"updated":"2013-11-20 08:49:40.000000000","message":"This line as written will throw a TypeError.  The second argument should be the class of the network client, e.g.\n\nisinstance(client, neutronclient.v2_0.client.Client)\n\nor\n\nisinstance(client, type(self.network_client))\n\nReference: http://docs.python.org/2/library/functions.html#isinstance","commit_id":"a4a70b2f7fa07eba6067686aa3c4f8acced579f2"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"53c7eae274c152c08ea06ac9289f8e3b72dd2475","unresolved":false,"context_lines":[{"line_number":361,"context_line":"            raise exceptions.TimeoutException(message)"},{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def create_loginable_secgroup_rule(self, client\u003dNone, secgroup_id\u003dNone):"},{"line_number":364,"context_line":"        if isinstance(client, self.network_client):"},{"line_number":365,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":366,"context_line":"                                                                secgroup_id)"},{"line_number":367,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2Bx9A%3D","line":364,"in_reply_to":"AAAATn%2F%2ByNU%3D","updated":"2013-11-20 09:49:24.000000000","message":"Done","commit_id":"a4a70b2f7fa07eba6067686aa3c4f8acced579f2"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"45b471897d0b6c572188afedaf4a15b779299936","unresolved":false,"context_lines":[{"line_number":528,"context_line":"                                                    namestart\u003dnamestart,"},{"line_number":529,"context_line":"                                                    tenant_id\u003dtenant_id)"},{"line_number":530,"context_line":"        else:"},{"line_number":531,"context_line":"            raise ValueError(msg\u003d\"A valid compute or network client instance \""},{"line_number":532,"context_line":"                                 \"is required\")"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def _create_network(self, tenant_id, namestart\u003d\u0027network-smoke-\u0027):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2ByMg%3D","line":531,"updated":"2013-11-20 08:49:40.000000000","message":"(Suggestion only) Convention is to omit the msg keyword name when instantiating exceptions, e.g. ValueError(\u0027Foo\u0027)","commit_id":"a4a70b2f7fa07eba6067686aa3c4f8acced579f2"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"53c7eae274c152c08ea06ac9289f8e3b72dd2475","unresolved":false,"context_lines":[{"line_number":528,"context_line":"                                                    namestart\u003dnamestart,"},{"line_number":529,"context_line":"                                                    tenant_id\u003dtenant_id)"},{"line_number":530,"context_line":"        else:"},{"line_number":531,"context_line":"            raise ValueError(msg\u003d\"A valid compute or network client instance \""},{"line_number":532,"context_line":"                                 \"is required\")"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"    def _create_network(self, tenant_id, namestart\u003d\u0027network-smoke-\u0027):"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2Bx84%3D","line":531,"in_reply_to":"AAAATn%2F%2ByMg%3D","updated":"2013-11-20 09:49:24.000000000","message":"Done","commit_id":"a4a70b2f7fa07eba6067686aa3c4f8acced579f2"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"45b471897d0b6c572188afedaf4a15b779299936","unresolved":false,"context_lines":[{"line_number":744,"context_line":"                try:"},{"line_number":745,"context_line":"                    result \u003d self.network_client.create_security_group_rule("},{"line_number":746,"context_line":"                        body\u003dbody)"},{"line_number":747,"context_line":"                    sg_rule \u003d net_common.DeletableSecurityGroupRule("},{"line_number":748,"context_line":"                        client\u003dself.network_client,"},{"line_number":749,"context_line":"                        **result[\u0027security_group_rule\u0027]"},{"line_number":750,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2ByLw%3D","line":747,"updated":"2013-11-20 08:49:40.000000000","message":"As per the previous comment, lines 747-753 do not belong in this try block.  As per your response, the code should not be executed if an exception occurs, so the solution is to use an \u0027else\u0027, which is invoked if no exception is caught:\n\ntry:\n   # do stuff\nexcept:\n   # do stuff if an exception occurs\nelse: # must appear after all except blocks\n   # do stuff if an exception does not occur\n\nReference: http://docs.python.org/2/tutorial/errors.html#handling-exceptions","commit_id":"a4a70b2f7fa07eba6067686aa3c4f8acced579f2"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"53c7eae274c152c08ea06ac9289f8e3b72dd2475","unresolved":false,"context_lines":[{"line_number":744,"context_line":"                try:"},{"line_number":745,"context_line":"                    result \u003d self.network_client.create_security_group_rule("},{"line_number":746,"context_line":"                        body\u003dbody)"},{"line_number":747,"context_line":"                    sg_rule \u003d net_common.DeletableSecurityGroupRule("},{"line_number":748,"context_line":"                        client\u003dself.network_client,"},{"line_number":749,"context_line":"                        **result[\u0027security_group_rule\u0027]"},{"line_number":750,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2Bx8Q%3D","line":747,"in_reply_to":"AAAATn%2F%2ByLw%3D","updated":"2013-11-20 09:49:24.000000000","message":"Done","commit_id":"a4a70b2f7fa07eba6067686aa3c4f8acced579f2"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"ccde00914af2764f0726b47711192347e76a55ff","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":366,"context_line":"                                                                secgroup_id)"},{"line_number":367,"context_line":"        else:"},{"line_number":368,"context_line":"            return self._create_loginable_secgroup_rule_nova(client,"},{"line_number":369,"context_line":"                                                             secgroup_id)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def _create_loginable_secgroup_rule_nova(self, client\u003dNone,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2Ba%2FY%3D","line":368,"updated":"2013-11-26 09:53:50.000000000","message":"nova is \u0027default\u0027 here","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7db615eca1eae8a2d4d3aa4e149ddfa010100d56","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            return self._create_loginable_secgroup_rule_neutron(client,"},{"line_number":366,"context_line":"                                                                secgroup_id)"},{"line_number":367,"context_line":"        else:"},{"line_number":368,"context_line":"            return self._create_loginable_secgroup_rule_nova(client,"},{"line_number":369,"context_line":"                                                             secgroup_id)"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    def _create_loginable_secgroup_rule_nova(self, client\u003dNone,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BaM8%3D","line":368,"in_reply_to":"AAAATn%2F%2Ba%2FY%3D","updated":"2013-11-26 12:15:39.000000000","message":"Done","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"ccde00914af2764f0726b47711192347e76a55ff","unresolved":false,"context_lines":[{"line_number":529,"context_line":"            return self._create_security_group_nova(client\u003dclient,"},{"line_number":530,"context_line":"                                                    namestart\u003dnamestart,"},{"line_number":531,"context_line":"                                                    tenant_id\u003dtenant_id)"},{"line_number":532,"context_line":"        else:"},{"line_number":533,"context_line":"            raise ValueError(\"A valid compute or network client instance is \""},{"line_number":534,"context_line":"                             \"required\")"},{"line_number":535,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2Ba%2Bw%3D","line":532,"updated":"2013-11-26 09:53:50.000000000","message":"ValueError is \u0027default\u0027 here - not nova","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7db615eca1eae8a2d4d3aa4e149ddfa010100d56","unresolved":false,"context_lines":[{"line_number":529,"context_line":"            return self._create_security_group_nova(client\u003dclient,"},{"line_number":530,"context_line":"                                                    namestart\u003dnamestart,"},{"line_number":531,"context_line":"                                                    tenant_id\u003dtenant_id)"},{"line_number":532,"context_line":"        else:"},{"line_number":533,"context_line":"            raise ValueError(\"A valid compute or network client instance is \""},{"line_number":534,"context_line":"                             \"required\")"},{"line_number":535,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BaM4%3D","line":532,"in_reply_to":"AAAATn%2F%2Ba%2Bw%3D","updated":"2013-11-26 12:15:39.000000000","message":"Done","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                                     namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":675,"context_line":"                                     tenant_id\u003dNone):"},{"line_number":676,"context_line":"        \"\"\""},{"line_number":677,"context_line":"        create a security group without rules"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        default rules will be created:"},{"line_number":680,"context_line":"         - IPv4 egress to any"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWhs%3D","line":677,"updated":"2013-11-27 01:58:58.000000000","message":"This should be on the line above, and needs correct grammar:\n\n \"\"\"Create a security group without rules.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":674,"context_line":"                                     namestart\u003d\u0027secgroup-smoke-\u0027,"},{"line_number":675,"context_line":"                                     tenant_id\u003dNone):"},{"line_number":676,"context_line":"        \"\"\""},{"line_number":677,"context_line":"        create a security group without rules"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        default rules will be created:"},{"line_number":680,"context_line":"         - IPv4 egress to any"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV2Q%3D","line":677,"in_reply_to":"AAAATn%2F%2BWhs%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        \"\"\""},{"line_number":677,"context_line":"        create a security group without rules"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        default rules will be created:"},{"line_number":680,"context_line":"         - IPv4 egress to any"},{"line_number":681,"context_line":"         - IPv6 egress to any"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWhk%3D","line":679,"updated":"2013-11-27 01:58:58.000000000","message":"Default.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":676,"context_line":"        \"\"\""},{"line_number":677,"context_line":"        create a security group without rules"},{"line_number":678,"context_line":""},{"line_number":679,"context_line":"        default rules will be created:"},{"line_number":680,"context_line":"         - IPv4 egress to any"},{"line_number":681,"context_line":"         - IPv6 egress to any"},{"line_number":682,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV2M%3D","line":679,"in_reply_to":"AAAATn%2F%2BWhk%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        :param tenant_id: secgroup will be created in this tenant"},{"line_number":684,"context_line":"        :returns: DeletableSecurityGroup -- containing the"},{"line_number":685,"context_line":"        secgroup created"},{"line_number":686,"context_line":"        \"\"\""},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWhg%3D","line":685,"updated":"2013-11-27 01:58:58.000000000","message":"Generally epydoc indents this:\n\n :returns DeletableSecurityGroup -- containing the\n     secgroup created.\n\n(Also note the missing period).","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        :param tenant_id: secgroup will be created in this tenant"},{"line_number":684,"context_line":"        :returns: DeletableSecurityGroup -- containing the"},{"line_number":685,"context_line":"        secgroup created"},{"line_number":686,"context_line":"        \"\"\""},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV2A%3D","line":685,"in_reply_to":"AAAATn%2F%2BWhg%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        :returns: DeletableSecurityGroup -- containing the"},{"line_number":685,"context_line":"        secgroup created"},{"line_number":686,"context_line":"        \"\"\""},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        if not client:"},{"line_number":689,"context_line":"            client \u003d self.network_client"},{"line_number":690,"context_line":"        sg_name \u003d data_utils.rand_name(namestart)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWhc%3D","line":687,"updated":"2013-11-27 01:58:58.000000000","message":"No blank line here - it breaks things up for no purpose.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":684,"context_line":"        :returns: DeletableSecurityGroup -- containing the"},{"line_number":685,"context_line":"        secgroup created"},{"line_number":686,"context_line":"        \"\"\""},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"        if not client:"},{"line_number":689,"context_line":"            client \u003d self.network_client"},{"line_number":690,"context_line":"        sg_name \u003d data_utils.rand_name(namestart)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV18%3D","line":687,"in_reply_to":"AAAATn%2F%2BWhc%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        :param tenant_id: admin if None"},{"line_number":713,"context_line":"        :returns: DeletableSecurityGroup: default secgroup for given tenant"},{"line_number":714,"context_line":"        \"\"\""},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        if not client:"},{"line_number":717,"context_line":"            client \u003d self.network_client"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWhQ%3D","line":714,"updated":"2013-11-27 01:58:58.000000000","message":"Similar concerns here.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":711,"context_line":""},{"line_number":712,"context_line":"        :param tenant_id: admin if None"},{"line_number":713,"context_line":"        :returns: DeletableSecurityGroup: default secgroup for given tenant"},{"line_number":714,"context_line":"        \"\"\""},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        if not client:"},{"line_number":717,"context_line":"            client \u003d self.network_client"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV10%3D","line":714,"in_reply_to":"AAAATn%2F%2BWhQ%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                    port_range_min: 22,"},{"line_number":752,"context_line":"                    port_range_max: 22"},{"line_number":753,"context_line":"                    }"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"        \"\"\""},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWhE%3D","line":754,"updated":"2013-11-27 01:58:58.000000000","message":"And here.","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":751,"context_line":"                    port_range_min: 22,"},{"line_number":752,"context_line":"                    port_range_max: 22"},{"line_number":753,"context_line":"                    }"},{"line_number":754,"context_line":""},{"line_number":755,"context_line":"        \"\"\""},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        if not client:"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV1w%3D","line":754,"in_reply_to":"AAAATn%2F%2BWhE%3D","updated":"2013-11-27 06:34:35.000000000","message":"Done","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3de57bc5444dd868bc754a05c914fe302b81f7da","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def _create_loginable_secgroup_rule_nova(self, client\u003dNone,"},{"line_number":364,"context_line":"                                             secgroup_id\u003dNone):"},{"line_number":365,"context_line":"        if not client:"},{"line_number":366,"context_line":"            client \u003d self.compute_client"},{"line_number":367,"context_line":"        if secgroup_id is None:"},{"line_number":368,"context_line":"            sgs \u003d client.security_groups.list()"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BVfg%3D","line":365,"updated":"2013-11-27 10:34:19.000000000","message":"Better keep the \u0027is None\u0027 here if you want to test whether client was provided or not, and not test client\u0027s __nonzero/bool__ method instead.\n\nSame applies to other methods You added.","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"826b4ffb836ecef3e22fcf87bb8c3eaaaba08b60","unresolved":false,"context_lines":[{"line_number":362,"context_line":""},{"line_number":363,"context_line":"    def _create_loginable_secgroup_rule_nova(self, client\u003dNone,"},{"line_number":364,"context_line":"                                             secgroup_id\u003dNone):"},{"line_number":365,"context_line":"        if not client:"},{"line_number":366,"context_line":"            client \u003d self.compute_client"},{"line_number":367,"context_line":"        if secgroup_id is None:"},{"line_number":368,"context_line":"            sgs \u003d client.security_groups.list()"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BQ7U%3D","line":365,"in_reply_to":"AAAATn%2F%2BVfg%3D","updated":"2013-11-28 07:40:05.000000000","message":"Done","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3de57bc5444dd868bc754a05c914fe302b81f7da","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"},{"line_number":690,"context_line":"                       description\u003dsg_desc)"},{"line_number":691,"context_line":"        if tenant_id:"},{"line_number":692,"context_line":"            sg_dict.update(tenant_id\u003dtenant_id)"},{"line_number":693,"context_line":"        body \u003d dict(security_group\u003dsg_dict)"},{"line_number":694,"context_line":"        result \u003d client.create_security_group(body\u003dbody)"},{"line_number":695,"context_line":"        secgroup \u003d net_common.DeletableSecurityGroup("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BVFk%3D","line":692,"updated":"2013-11-27 10:34:19.000000000","message":"same as bellow any benefit in ... ?\n\nsg_dict.update(tenant_id\u003dtenant_id)\n\ninstead of\n\nsg_dict[\u0027tenant_id\u0027] \u003d tenant_id","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"826b4ffb836ecef3e22fcf87bb8c3eaaaba08b60","unresolved":false,"context_lines":[{"line_number":689,"context_line":"        sg_dict \u003d dict(name\u003dsg_name,"},{"line_number":690,"context_line":"                       description\u003dsg_desc)"},{"line_number":691,"context_line":"        if tenant_id:"},{"line_number":692,"context_line":"            sg_dict.update(tenant_id\u003dtenant_id)"},{"line_number":693,"context_line":"        body \u003d dict(security_group\u003dsg_dict)"},{"line_number":694,"context_line":"        result \u003d client.create_security_group(body\u003dbody)"},{"line_number":695,"context_line":"        secgroup \u003d net_common.DeletableSecurityGroup("}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BQ60%3D","line":692,"in_reply_to":"AAAATn%2F%2BVFk%3D","updated":"2013-11-28 07:40:05.000000000","message":"Done","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3de57bc5444dd868bc754a05c914fe302b81f7da","unresolved":false,"context_lines":[{"line_number":703,"context_line":"        return secgroup"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def _default_security_group(self, client\u003dNone, tenant_id\u003dNone):"},{"line_number":706,"context_line":"        \"\"\"Get default secgroup for given tenant_id (admin if None)."},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        :param tenant_id: admin if None"},{"line_number":709,"context_line":"        :returns: DeletableSecurityGroup -- default secgroup for given tenant"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BVMQ%3D","line":706,"updated":"2013-11-27 10:34:19.000000000","message":"I would prefer to require tenant_id - and tests providing their tenant (whatever if admin or isolated is theirs) and not default to admin, as with isolated tenants it could bite.\n\nAlso same below.","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"826b4ffb836ecef3e22fcf87bb8c3eaaaba08b60","unresolved":false,"context_lines":[{"line_number":703,"context_line":"        return secgroup"},{"line_number":704,"context_line":""},{"line_number":705,"context_line":"    def _default_security_group(self, client\u003dNone, tenant_id\u003dNone):"},{"line_number":706,"context_line":"        \"\"\"Get default secgroup for given tenant_id (admin if None)."},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"        :param tenant_id: admin if None"},{"line_number":709,"context_line":"        :returns: DeletableSecurityGroup -- default secgroup for given tenant"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BQ6s%3D","line":706,"in_reply_to":"AAAATn%2F%2BVMQ%3D","updated":"2013-11-28 07:40:05.000000000","message":"Done","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3de57bc5444dd868bc754a05c914fe302b81f7da","unresolved":false,"context_lines":[{"line_number":770,"context_line":""},{"line_number":771,"context_line":"    def _create_loginable_secgroup_rule_neutron(self, client\u003dNone,"},{"line_number":772,"context_line":"                                                secgroup\u003dNone):"},{"line_number":773,"context_line":"        # These rules are intended to permit inbound ssh and icmp"},{"line_number":774,"context_line":"        # traffic from all sources, so no group_id is provided."},{"line_number":775,"context_line":"        # Setting a group_id would only permit traffic from ports"},{"line_number":776,"context_line":"        # belonging to the same security group."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BVLw%3D","line":773,"updated":"2013-11-27 10:34:19.000000000","message":"Why just comment and not docstring here, explaining use of this method?","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"826b4ffb836ecef3e22fcf87bb8c3eaaaba08b60","unresolved":false,"context_lines":[{"line_number":770,"context_line":""},{"line_number":771,"context_line":"    def _create_loginable_secgroup_rule_neutron(self, client\u003dNone,"},{"line_number":772,"context_line":"                                                secgroup\u003dNone):"},{"line_number":773,"context_line":"        # These rules are intended to permit inbound ssh and icmp"},{"line_number":774,"context_line":"        # traffic from all sources, so no group_id is provided."},{"line_number":775,"context_line":"        # Setting a group_id would only permit traffic from ports"},{"line_number":776,"context_line":"        # belonging to the same security group."}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BQ6Y%3D","line":773,"in_reply_to":"AAAATn%2F%2BVLw%3D","updated":"2013-11-28 07:40:05.000000000","message":"Done\nThese comments are part of the original version","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3de57bc5444dd868bc754a05c914fe302b81f7da","unresolved":false,"context_lines":[{"line_number":792,"context_line":"        ]"},{"line_number":793,"context_line":"        for ruleset in rulesets:"},{"line_number":794,"context_line":"            for r_direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":795,"context_line":"                ruleset.update({\u0027direction\u0027: r_direction})"},{"line_number":796,"context_line":"                try:"},{"line_number":797,"context_line":"                    sg_rule \u003d self._create_security_group_rule("},{"line_number":798,"context_line":"                        client\u003dclient, secgroup\u003dsecgroup, **ruleset)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BVI8%3D","line":795,"updated":"2013-11-27 10:34:19.000000000","message":"update instead of simple ruleset[\u0027direction\u0027] \u003d r_direction ?","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"826b4ffb836ecef3e22fcf87bb8c3eaaaba08b60","unresolved":false,"context_lines":[{"line_number":792,"context_line":"        ]"},{"line_number":793,"context_line":"        for ruleset in rulesets:"},{"line_number":794,"context_line":"            for r_direction in [\u0027ingress\u0027, \u0027egress\u0027]:"},{"line_number":795,"context_line":"                ruleset.update({\u0027direction\u0027: r_direction})"},{"line_number":796,"context_line":"                try:"},{"line_number":797,"context_line":"                    sg_rule \u003d self._create_security_group_rule("},{"line_number":798,"context_line":"                        client\u003dclient, secgroup\u003dsecgroup, **ruleset)"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BQ50%3D","line":795,"in_reply_to":"AAAATn%2F%2BVI8%3D","updated":"2013-11-28 07:40:05.000000000","message":"Done","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"3de57bc5444dd868bc754a05c914fe302b81f7da","unresolved":false,"context_lines":[{"line_number":805,"context_line":"                    self.assertEqual(r_direction, sg_rule.direction)"},{"line_number":806,"context_line":"                    rules.append(sg_rule)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        for rule in rules:"},{"line_number":809,"context_line":"            self.assertEqual(secgroup.tenant_id, rule.tenant_id)"},{"line_number":810,"context_line":"            self.assertEqual(secgroup.id, rule.security_group_id)"},{"line_number":811,"context_line":"        return rules"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BVG8%3D","line":808,"updated":"2013-11-27 10:34:19.000000000","message":"is there a reason why to do these asserts here, and not\n\na) above in the else, where you already do assert for the rule property\nb) in the self._create_security_group_rule, which seems as the one responsible for creation of the rule IN that secgroup and so the same tenant\n\nand actually these asserts are already there in the _create_security_group_rule ;)","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"826b4ffb836ecef3e22fcf87bb8c3eaaaba08b60","unresolved":false,"context_lines":[{"line_number":805,"context_line":"                    self.assertEqual(r_direction, sg_rule.direction)"},{"line_number":806,"context_line":"                    rules.append(sg_rule)"},{"line_number":807,"context_line":""},{"line_number":808,"context_line":"        for rule in rules:"},{"line_number":809,"context_line":"            self.assertEqual(secgroup.tenant_id, rule.tenant_id)"},{"line_number":810,"context_line":"            self.assertEqual(secgroup.id, rule.security_group_id)"},{"line_number":811,"context_line":"        return rules"}],"source_content_type":"text/x-python","patch_set":18,"id":"AAAATn%2F%2BQ5o%3D","line":808,"in_reply_to":"AAAATn%2F%2BVG8%3D","updated":"2013-11-28 07:40:05.000000000","message":"Done\nProbably due to lots of re-basing...","commit_id":"c1af3ad93634625799e921d2a8aabbf37d1c835e"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"61113793daff98f1e85fe77172452428430a2c51","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def _create_loginable_secgroup_rule_neutron(self, client\u003dNone,"},{"line_number":765,"context_line":"                                                secgroup\u003dNone):"},{"line_number":766,"context_line":"        \"\"\"These rules are intended to permit inbound ssh and icmp"},{"line_number":767,"context_line":"        traffic from all sources, so no group_id is provided."},{"line_number":768,"context_line":"        Setting a group_id would only permit traffic from ports"},{"line_number":769,"context_line":"        belonging to the same security group."}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BQhY%3D","line":766,"updated":"2013-11-28 09:09:13.000000000","message":"Better would be to have first, solo, line saying something like \"Create rules to allow inbound ssh and icmp. ...\" and then following (sep. by empty line) block explaining details.","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b827b0b9fab5562c3bf5584eb498c6cc8c3ad860","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def _create_loginable_secgroup_rule_neutron(self, client\u003dNone,"},{"line_number":765,"context_line":"                                                secgroup\u003dNone):"},{"line_number":766,"context_line":"        \"\"\"These rules are intended to permit inbound ssh and icmp"},{"line_number":767,"context_line":"        traffic from all sources, so no group_id is provided."},{"line_number":768,"context_line":"        Setting a group_id would only permit traffic from ports"},{"line_number":769,"context_line":"        belonging to the same security group."}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BJV0%3D","line":766,"in_reply_to":"AAAATn%2F%2BJWk%3D","updated":"2013-12-01 23:02:15.000000000","message":"yeh, I\u0027m sort of surprised hacking didn\u0027t catch us here. I wonder if we broke it somewhere. I\u0027d prefer the approach @Pavel said, but I\u0027m not going to -1 based on it. If this gets respun, please fix.","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"55d566aa431218ac70ee456571ad7b4cce9a589e","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def _create_loginable_secgroup_rule_neutron(self, client\u003dNone,"},{"line_number":765,"context_line":"                                                secgroup\u003dNone):"},{"line_number":766,"context_line":"        \"\"\"These rules are intended to permit inbound ssh and icmp"},{"line_number":767,"context_line":"        traffic from all sources, so no group_id is provided."},{"line_number":768,"context_line":"        Setting a group_id would only permit traffic from ports"},{"line_number":769,"context_line":"        belonging to the same security group."}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BJWk%3D","line":766,"in_reply_to":"AAAATn%2F%2BOXc%3D","updated":"2013-12-01 22:51:09.000000000","message":"@Salvatore are you saying the current structure is mandated by hacking? If so, no - PEP257 is what Pavel is asking for, and hacking totally permits that.","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"d6012d93cd6ca87d9ab02cb21cfaaafafe977136","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    def _create_loginable_secgroup_rule_neutron(self, client\u003dNone,"},{"line_number":765,"context_line":"                                                secgroup\u003dNone):"},{"line_number":766,"context_line":"        \"\"\"These rules are intended to permit inbound ssh and icmp"},{"line_number":767,"context_line":"        traffic from all sources, so no group_id is provided."},{"line_number":768,"context_line":"        Setting a group_id would only permit traffic from ports"},{"line_number":769,"context_line":"        belonging to the same security group."}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BOXc%3D","line":766,"in_reply_to":"AAAATn%2F%2BQhY%3D","updated":"2013-11-28 17:27:15.000000000","message":"This is actually mandated by hacking rules.","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"55d566aa431218ac70ee456571ad7b4cce9a589e","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        Setting a group_id would only permit traffic from ports"},{"line_number":769,"context_line":"        belonging to the same security group."},{"line_number":770,"context_line":"        \"\"\""},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        if client is None:"},{"line_number":773,"context_line":"            client \u003d self.network_client"},{"line_number":774,"context_line":"        rules \u003d []"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BJWg%3D","line":771,"updated":"2013-12-01 22:51:09.000000000","message":"No blank line here (PEP257)","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b827b0b9fab5562c3bf5584eb498c6cc8c3ad860","unresolved":false,"context_lines":[{"line_number":768,"context_line":"        Setting a group_id would only permit traffic from ports"},{"line_number":769,"context_line":"        belonging to the same security group."},{"line_number":770,"context_line":"        \"\"\""},{"line_number":771,"context_line":""},{"line_number":772,"context_line":"        if client is None:"},{"line_number":773,"context_line":"            client \u003d self.network_client"},{"line_number":774,"context_line":"        rules \u003d []"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BJWI%3D","line":771,"in_reply_to":"AAAATn%2F%2BJWg%3D","updated":"2013-12-01 23:02:15.000000000","message":"I think that\u0027s an overreach, the blank is fine.","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"}],"tempest/scenario/test_large_ops.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        name \u003d rand_name(\u0027scenario-server-\u0027)"},{"line_number":86,"context_line":"        client \u003d self.compute_client"},{"line_number":87,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":88,"context_line":"        secgroup \u003d self._create_security_group(client\u003dclient)"},{"line_number":89,"context_line":"        self.servers \u003d client.servers.create("},{"line_number":90,"context_line":"            name\u003dname, image\u003dself.image,"},{"line_number":91,"context_line":"            flavor\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7%2B0%3D","line":88,"updated":"2013-11-18 11:35:29.000000000","message":"large_ops should be executed against neutron too.\nHow could we ensure in that case we pass the network client to this function?","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"9bf9d49b4f9f575bb788bdd4f12befe47ca1d266","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        name \u003d rand_name(\u0027scenario-server-\u0027)"},{"line_number":86,"context_line":"        client \u003d self.compute_client"},{"line_number":87,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":88,"context_line":"        secgroup \u003d self._create_security_group(client\u003dclient)"},{"line_number":89,"context_line":"        self.servers \u003d client.servers.create("},{"line_number":90,"context_line":"            name\u003dname, image\u003dself.image,"},{"line_number":91,"context_line":"            flavor\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7mM%3D","line":88,"in_reply_to":"AAAATn%2F%2B7%2B0%3D","updated":"2013-11-18 13:10:20.000000000","message":"large_ops was executed against nova so far. I think that in this case it should be executed twice.","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"ccde00914af2764f0726b47711192347e76a55ff","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        name \u003d rand_name(\u0027scenario-server-\u0027)"},{"line_number":86,"context_line":"        client \u003d self.compute_client"},{"line_number":87,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":88,"context_line":"        secgroup \u003d self._create_security_group_nova(client\u003dclient)"},{"line_number":89,"context_line":"        self.servers \u003d client.servers.create("},{"line_number":90,"context_line":"            name\u003dname, image\u003dself.image,"},{"line_number":91,"context_line":"            flavor\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2Ba98%3D","line":88,"updated":"2013-11-26 09:53:50.000000000","message":"Is there a reason why to explicitly pass client here?","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7db615eca1eae8a2d4d3aa4e149ddfa010100d56","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        name \u003d rand_name(\u0027scenario-server-\u0027)"},{"line_number":86,"context_line":"        client \u003d self.compute_client"},{"line_number":87,"context_line":"        flavor_id \u003d self.config.compute.flavor_ref"},{"line_number":88,"context_line":"        secgroup \u003d self._create_security_group_nova(client\u003dclient)"},{"line_number":89,"context_line":"        self.servers \u003d client.servers.create("},{"line_number":90,"context_line":"            name\u003dname, image\u003dself.image,"},{"line_number":91,"context_line":"            flavor\u003dflavor_id,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BaOc%3D","line":88,"in_reply_to":"AAAATn%2F%2Ba98%3D","updated":"2013-11-26 12:15:39.000000000","message":"not really, except that client was already defined","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"}],"tempest/scenario/test_network_basic_ops.py":[{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"3f2728445aa2739ff13d00dcae7281ffbd3536f7","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d self._create_security_group("},{"line_number":168,"context_line":"            client\u003dself.compute_client)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7%2Bg%3D","line":168,"updated":"2013-11-18 11:35:29.000000000","message":"I seem to recall test_network_basic_ops is a neutron only scenario.\n\nIf we pass compute_client here, aren\u0027t we going to create a nova security_group?","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"9bf9d49b4f9f575bb788bdd4f12befe47ca1d266","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d self._create_security_group("},{"line_number":168,"context_line":"            client\u003dself.compute_client)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7lk%3D","line":168,"in_reply_to":"AAAATn%2F%2B7%2Bg%3D","updated":"2013-11-18 13:10:20.000000000","message":"1. it is listed as compute+network\n2. that was the existing choice. no change was actually made\n3. in that case we should change the client on a different and simple patch","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"66551a5cb9c1e25a705e6ec7c8bf74ac4989ebc5","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d self._create_security_group("},{"line_number":168,"context_line":"            client\u003dself.compute_client)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B60E%3D","line":168,"in_reply_to":"AAAATn%2F%2B7j8%3D","updated":"2013-11-20 06:50:53.000000000","message":"Done\nchange client to network_client","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"d2e3d6ab79deb0554aa9707aea3928eb77067eb5","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d self._create_security_group("},{"line_number":168,"context_line":"            client\u003dself.compute_client)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2B7j8%3D","line":168,"in_reply_to":"AAAATn%2F%2B7lk%3D","updated":"2013-11-18 13:25:52.000000000","message":"It is listed as compute + network because it has to create vm\u0027s to validate vm connectivity.  For all network setup, though, the goal has always been to use neutron directly.  Network setup with nova is already being tested in test_server_basic_ops.  Maybe this needs to be clarified by a test rename? i.e. test_neutron_basic_ops/test_nova_basic_ops","commit_id":"222569206f16c56476eca27cd85bf4d4fa3f10a5"},{"author":{"_account_id":6683,"name":"Pavel Sedlák","email":"psedlak@redhat.com","username":"psedlak"},"change_message_id":"ccde00914af2764f0726b47711192347e76a55ff","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d\\"},{"line_number":168,"context_line":"            self._create_security_group_neutron(client\u003dself.network_client,"},{"line_number":169,"context_line":"                                                tenant_id\u003dself.tenant_id)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def _create_networks(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2Ba9w%3D","line":168,"updated":"2013-11-26 09:53:50.000000000","message":"Also here - why to explicitly pass \"self.network_client\" - when you are already expl. calling _neutron version?","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"7db615eca1eae8a2d4d3aa4e149ddfa010100d56","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d\\"},{"line_number":168,"context_line":"            self._create_security_group_neutron(client\u003dself.network_client,"},{"line_number":169,"context_line":"                                                tenant_id\u003dself.tenant_id)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def _create_networks(self):"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAATn%2F%2BaM0%3D","line":168,"in_reply_to":"AAAATn%2F%2Ba9w%3D","updated":"2013-11-26 12:15:39.000000000","message":"Done","commit_id":"e34de7aa59ac78b2610dba8b950a8539abf938e6"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"c754326b5c04046447868367e0b0d792f3404103","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d\\"},{"line_number":168,"context_line":"            self._create_security_group_neutron(tenant_id\u003dself.tenant_id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BWgo%3D","line":168,"updated":"2013-11-27 01:58:58.000000000","message":"I worry that this will switch from nova to neutron unintentionally?","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"331d4d77ff4e26f90f6a190cc8154973a695ee95","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d\\"},{"line_number":168,"context_line":"            self._create_security_group_neutron(tenant_id\u003dself.tenant_id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":17,"id":"AAAATn%2F%2BV2c%3D","line":168,"in_reply_to":"AAAATn%2F%2BWgo%3D","updated":"2013-11-27 06:34:35.000000000","message":"past comments demanded this should be neutron","commit_id":"053fd5799efe1ccc4d7fa2c6099100af15869c57"},{"author":{"_account_id":4190,"name":"lifeless","email":"robertc@robertcollins.net","username":"lifeless"},"change_message_id":"55d566aa431218ac70ee456571ad7b4cce9a589e","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d\\"},{"line_number":168,"context_line":"            self._create_security_group_neutron(tenant_id\u003dself.tenant_id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BJWc%3D","line":168,"updated":"2013-12-01 22:51:09.000000000","message":"Ok, well I\u0027ll leave that to core to assess.","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b827b0b9fab5562c3bf5584eb498c6cc8c3ad860","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def _create_security_groups(self):"},{"line_number":167,"context_line":"        self.security_groups[self.tenant_id] \u003d\\"},{"line_number":168,"context_line":"            self._create_security_group_neutron(tenant_id\u003dself.tenant_id)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _create_networks(self):"},{"line_number":171,"context_line":"        network \u003d self._create_network(self.tenant_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"AAAATn%2F%2BJV4%3D","line":168,"in_reply_to":"AAAATn%2F%2BJWc%3D","updated":"2013-12-01 23:02:15.000000000","message":"yes, this is only a neutron test, though it\u0027s not so clear based on current test structure. This call bypasses the nova-network API and goes straight to neutron.","commit_id":"eb69f3fc9e245e8a59845976861947c695bec314"}]}
