)]}'
{"octavia_tempest_plugin/clients.py":[{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"0bcf4e647fabe00b5ab94922deb6d823369d25de","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#   License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#   under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"from tempest import clients"},{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from octavia_tempest_plugin.services.load_balancer.v2 import ("}],"source_content_type":"text/x-python","patch_set":14,"id":"5f2577a7_00c8a11f","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":27},"updated":"2017-09-14 03:30:19.000000000","message":"tempest.clients is not considered as stable interface according to https://docs.openstack.org/tempest/latest/plugin.html#stable-tempest-apis-plugins-may-use\n\nThe service client module of each tempest plugin has already been registered in `tempest.test.BaseTestCase.setup_clients` method, an example here https://github.com/openstack/qinling/blob/master/qinling_tempest_plugin/tests/base.py#L38","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f87f216b41a0e431407dfea51cf5126f0ee43ae","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#   License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#   under the License."},{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":"from tempest import clients"},{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from octavia_tempest_plugin.services.load_balancer.v2 import ("}],"source_content_type":"text/x-python","patch_set":14,"id":"ff5d4b2f_ca3a2333","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":27},"in_reply_to":"5f2577a7_00c8a11f","updated":"2017-09-19 04:36:53.000000000","message":"+1 we can\u0027t use clients","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"}],"octavia_tempest_plugin/config.py":[{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"0bcf4e647fabe00b5ab94922deb6d823369d25de","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"    For running Octavia tests, it  is assumed that the following option is"},{"line_number":20,"context_line":"    defined in the [service_available] section of etc/tempest.conf"},{"line_number":21,"context_line":"    octavia \u003d True"},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"service_available_group \u003d cfg.OptGroup(name\u003d\u0027service_available\u0027,"},{"line_number":24,"context_line":"                                       title\u003d\u0027Available OpenStack Services\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f2577a7_0338ab9d","line":21,"range":{"start_line":21,"start_character":4,"end_line":21,"end_character":11},"updated":"2017-09-14 03:30:19.000000000","message":"load-balancer?","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"bcefb7e9a63767181d4c47505958b7e511f658af","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":"    For running Octavia tests, it  is assumed that the following option is"},{"line_number":20,"context_line":"    defined in the [service_available] section of etc/tempest.conf"},{"line_number":21,"context_line":"    octavia \u003d True"},{"line_number":22,"context_line":"\"\"\""},{"line_number":23,"context_line":"service_available_group \u003d cfg.OptGroup(name\u003d\u0027service_available\u0027,"},{"line_number":24,"context_line":"                                       title\u003d\u0027Available OpenStack Services\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf57530f_ca6c430a","line":21,"range":{"start_line":21,"start_character":4,"end_line":21,"end_character":11},"in_reply_to":"5f2577a7_0338ab9d","updated":"2017-10-06 22:22:00.000000000","message":"Done","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"0bcf4e647fabe00b5ab94922deb6d823369d25de","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"OctaviaGroup \u003d ["},{"line_number":36,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"},{"line_number":37,"context_line":"               default\u003d\u0027network\u0027,"},{"line_number":38,"context_line":"               help\u003d\u0027Catalog type of the Octavia service.\u0027),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027build_interval\u0027,"},{"line_number":40,"context_line":"               default\u003d5,"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f2577a7_ecd6b127","line":37,"updated":"2017-09-14 03:30:19.000000000","message":"according to devstack script, the catalog_type should be \u0027load-balancer\u0027","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f87f216b41a0e431407dfea51cf5126f0ee43ae","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"OctaviaGroup \u003d ["},{"line_number":36,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"},{"line_number":37,"context_line":"               default\u003d\u0027network\u0027,"},{"line_number":38,"context_line":"               help\u003d\u0027Catalog type of the Octavia service.\u0027),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027build_interval\u0027,"},{"line_number":40,"context_line":"               default\u003d5,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff5d4b2f_6a61f739","line":37,"in_reply_to":"5f2577a7_ecd6b127","updated":"2017-09-19 04:36:53.000000000","message":"+1","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"bcefb7e9a63767181d4c47505958b7e511f658af","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"OctaviaGroup \u003d ["},{"line_number":36,"context_line":"    cfg.StrOpt(\u0027catalog_type\u0027,"},{"line_number":37,"context_line":"               default\u003d\u0027network\u0027,"},{"line_number":38,"context_line":"               help\u003d\u0027Catalog type of the Octavia service.\u0027),"},{"line_number":39,"context_line":"    cfg.IntOpt(\u0027build_interval\u0027,"},{"line_number":40,"context_line":"               default\u003d5,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf57530f_8a764bd8","line":37,"in_reply_to":"ff5d4b2f_6a61f739","updated":"2017-10-06 22:22:00.000000000","message":"Done","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f87f216b41a0e431407dfea51cf5126f0ee43ae","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               help\u003d\u0027Timeout in seconds to wait for non-load-balancer \u0027"},{"line_number":46,"context_line":"                    \u0027resources to build\u0027),"},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027lb_build_interval\u0027,"},{"line_number":48,"context_line":"               default\u003d15,"},{"line_number":49,"context_line":"               help\u003d\u0027Time in seconds between build status checks for a \u0027"},{"line_number":50,"context_line":"                    \u0027load balancer.\u0027),"},{"line_number":51,"context_line":"    cfg.IntOpt(\u0027lb_build_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff5d4b2f_ca510365","line":48,"range":{"start_line":48,"start_character":23,"end_line":48,"end_character":25},"updated":"2017-09-19 04:36:53.000000000","message":"Does this need to be this high?  Seems like it would just make the test take longer.","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"bcefb7e9a63767181d4c47505958b7e511f658af","unresolved":false,"context_lines":[{"line_number":45,"context_line":"               help\u003d\u0027Timeout in seconds to wait for non-load-balancer \u0027"},{"line_number":46,"context_line":"                    \u0027resources to build\u0027),"},{"line_number":47,"context_line":"    cfg.IntOpt(\u0027lb_build_interval\u0027,"},{"line_number":48,"context_line":"               default\u003d15,"},{"line_number":49,"context_line":"               help\u003d\u0027Time in seconds between build status checks for a \u0027"},{"line_number":50,"context_line":"                    \u0027load balancer.\u0027),"},{"line_number":51,"context_line":"    cfg.IntOpt(\u0027lb_build_timeout\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf57530f_eac267e9","line":48,"range":{"start_line":48,"start_character":23,"end_line":48,"end_character":25},"in_reply_to":"ff5d4b2f_ca510365","updated":"2017-10-06 22:22:00.000000000","message":"I will do some testing on this and see if I can reduce it.","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"0bcf4e647fabe00b5ab94922deb6d823369d25de","unresolved":false,"context_lines":[{"line_number":53,"context_line":"               help\u003d\u0027Timeout in seconds to wait for a \u0027"},{"line_number":54,"context_line":"                    \u0027load balancer to build.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027vip_network_id\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027614ad35d-62a7-4b5a-b307-9095691ccaa4\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Network to provision load balancer from.\u0027)"},{"line_number":58,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f2577a7_2cecb9f1","line":56,"range":{"start_line":56,"start_character":24,"end_line":56,"end_character":60},"updated":"2017-09-14 03:30:19.000000000","message":"we can just leave it as an empty string","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"bcefb7e9a63767181d4c47505958b7e511f658af","unresolved":false,"context_lines":[{"line_number":53,"context_line":"               help\u003d\u0027Timeout in seconds to wait for a \u0027"},{"line_number":54,"context_line":"                    \u0027load balancer to build.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027vip_network_id\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027614ad35d-62a7-4b5a-b307-9095691ccaa4\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Network to provision load balancer from.\u0027)"},{"line_number":58,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"bf57530f_ca456372","line":56,"range":{"start_line":56,"start_character":24,"end_line":56,"end_character":60},"in_reply_to":"5f2577a7_2cecb9f1","updated":"2017-10-06 22:22:00.000000000","message":"Done","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f87f216b41a0e431407dfea51cf5126f0ee43ae","unresolved":false,"context_lines":[{"line_number":53,"context_line":"               help\u003d\u0027Timeout in seconds to wait for a \u0027"},{"line_number":54,"context_line":"                    \u0027load balancer to build.\u0027),"},{"line_number":55,"context_line":"    cfg.StrOpt(\u0027vip_network_id\u0027,"},{"line_number":56,"context_line":"               default\u003d\u0027614ad35d-62a7-4b5a-b307-9095691ccaa4\u0027,"},{"line_number":57,"context_line":"               help\u003d\u0027Network to provision load balancer from.\u0027)"},{"line_number":58,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff5d4b2f_8a4b0baf","line":56,"range":{"start_line":56,"start_character":24,"end_line":56,"end_character":60},"in_reply_to":"5f2577a7_2cecb9f1","updated":"2017-09-19 04:36:53.000000000","message":"Yeah, this should not have a default at all.","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"53cd0cf2b1507e0be50f6efd1a5113cd0b6adf8e","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"service_option \u003d cfg.BoolOpt("},{"line_number":21,"context_line":"    \u0027loadbalancer\u0027,"},{"line_number":22,"context_line":"    default\u003dTrue,"},{"line_number":23,"context_line":"    help\u003d\"Whether or not loadbalancing service is expected to be available\""},{"line_number":24,"context_line":")"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_fb052111","line":22,"updated":"2017-11-02 17:25:16.000000000","message":"Should this really default to true?","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"82d01424f70117ca1753590fa354117c047a20e5","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"service_option \u003d cfg.BoolOpt("},{"line_number":21,"context_line":"    \u0027loadbalancer\u0027,"},{"line_number":22,"context_line":"    default\u003dTrue,"},{"line_number":23,"context_line":"    help\u003d\"Whether or not loadbalancing service is expected to be available\""},{"line_number":24,"context_line":")"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_811b5bc8","line":22,"in_reply_to":"3f4b6375_b0ed83f1","updated":"2017-11-02 19:48:54.000000000","message":"Ok, I see other projects have done this.  Good enough.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3c1ea3c35f4d84128db671595b15d4aab5429e61","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"service_option \u003d cfg.BoolOpt("},{"line_number":21,"context_line":"    \u0027loadbalancer\u0027,"},{"line_number":22,"context_line":"    default\u003dTrue,"},{"line_number":23,"context_line":"    help\u003d\"Whether or not loadbalancing service is expected to be available\""},{"line_number":24,"context_line":")"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_b0ed83f1","line":22,"in_reply_to":"3f4b6375_fb052111","updated":"2017-11-02 18:09:36.000000000","message":"If you\u0027ve installed our plugin, I think it should? But, not sure about best practice.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"}],"octavia_tempest_plugin/contrib/httpd/README.md":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"bf127d12b8196adbb078476da580cc410cf98b82","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"```sh"},{"line_number":4,"context_line":"sudo apt-get install -y golang"},{"line_number":5,"context_line":"go build -ldflags \"-linkmode external -extldflags -static\" -o httpd.bin httpd.go"},{"line_number":6,"context_line":"```"}],"source_content_type":"text/x-gfm","patch_set":39,"id":"3f4b6375_c08954ca","line":5,"range":{"start_line":5,"start_character":18,"end_line":5,"end_character":20},"updated":"2017-11-02 16:49:42.000000000","message":"We should add -w here to strip the debug data.  It drops the binary a couple of megabytes. (this is safe unlike using the strip utility which is not safe with go)\nAlso, we should check in a new smaller version.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"82d01424f70117ca1753590fa354117c047a20e5","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"```sh"},{"line_number":4,"context_line":"sudo apt-get install -y golang"},{"line_number":5,"context_line":"go build -ldflags \"-linkmode external -extldflags -static\" -o httpd.bin httpd.go"},{"line_number":6,"context_line":"```"}],"source_content_type":"text/x-gfm","patch_set":39,"id":"3f4b6375_a173f715","line":5,"range":{"start_line":5,"start_character":18,"end_line":5,"end_character":20},"in_reply_to":"3f4b6375_30963340","updated":"2017-11-02 19:48:54.000000000","message":"It is an ldflags setting.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"2d611a45780b39a5ba3ff7198adae902c1e55526","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"```sh"},{"line_number":4,"context_line":"sudo apt-get install -y golang"},{"line_number":5,"context_line":"go build -ldflags \"-linkmode external -extldflags -static\" -o httpd.bin httpd.go"},{"line_number":6,"context_line":"```"}],"source_content_type":"text/x-gfm","patch_set":39,"id":"3f4b6375_94b8f074","line":5,"range":{"start_line":5,"start_character":18,"end_line":5,"end_character":20},"in_reply_to":"3f4b6375_a173f715","updated":"2017-11-07 03:12:10.000000000","message":"Done","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3c1ea3c35f4d84128db671595b15d4aab5429e61","unresolved":false,"context_lines":[{"line_number":2,"context_line":""},{"line_number":3,"context_line":"```sh"},{"line_number":4,"context_line":"sudo apt-get install -y golang"},{"line_number":5,"context_line":"go build -ldflags \"-linkmode external -extldflags -static\" -o httpd.bin httpd.go"},{"line_number":6,"context_line":"```"}],"source_content_type":"text/x-gfm","patch_set":39,"id":"3f4b6375_30963340","line":5,"range":{"start_line":5,"start_character":18,"end_line":5,"end_character":20},"in_reply_to":"3f4b6375_c08954ca","updated":"2017-11-02 18:09:36.000000000","message":"Good idea. So, that\u0027s inside -ldflags, or is it an arg to `go build`?","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"}],"octavia_tempest_plugin/contrib/httpd/__init__.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"53cd0cf2b1507e0be50f6efd1a5113cd0b6adf8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"3f4b6375_1b535d19","updated":"2017-11-02 17:25:16.000000000","message":"There is no python code here, is this file necessary?","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3c1ea3c35f4d84128db671595b15d4aab5429e61","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":39,"id":"3f4b6375_30b3d30c","in_reply_to":"3f4b6375_1b535d19","updated":"2017-11-02 18:09:36.000000000","message":"It allows us to use `pkg_resources.resource_filename`. Otherwise, we need to do the path building by hand (which I guess we could, but this is convenient).","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"}],"octavia_tempest_plugin/services/lbaas/__init__.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"35b98bc5aca05d97b98538b48a62dda239c49c81","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ff346bd7_be9b69c7","updated":"2017-07-25 03:23:24.000000000","message":"Our service type is \"load-balancer\".  By convention we should change this directory from lbaas to load-balancer.","commit_id":"b33130f0e2f3df6b7d80f3b5a10f0e2effdb273a"}],"octavia_tempest_plugin/services/lbaas/v2/loadbalancer_client.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"35b98bc5aca05d97b98538b48a62dda239c49c81","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    def create_loadbalancer(self, **kwargs):"},{"line_number":35,"context_line":"        response, body \u003d self.post(self._uri, json.dumps(kwargs))"},{"line_number":36,"context_line":"        self.expected_success(200, response.status)"},{"line_number":37,"context_line":"        return json.loads(body)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def delete_loadbalancer(self, lb_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_1eaa75d1","line":36,"range":{"start_line":36,"start_character":30,"end_line":36,"end_character":33},"updated":"2017-07-25 03:23:24.000000000","message":"This should be 202","commit_id":"b33130f0e2f3df6b7d80f3b5a10f0e2effdb273a"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"35b98bc5aca05d97b98538b48a62dda239c49c81","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        uri \u003d self._uri + \u0027/{}\u0027.format(lb_id)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        response, body \u003d self.delete(uri)"},{"line_number":43,"context_line":"        self.expected_success(200, response.status)"},{"line_number":44,"context_line":"        return json.loads(body)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def get_loadbalancer(self, lb_id):"}],"source_content_type":"text/x-python","patch_set":2,"id":"ff346bd7_3e9899be","line":43,"range":{"start_line":43,"start_character":30,"end_line":43,"end_character":33},"updated":"2017-07-25 03:23:24.000000000","message":"204","commit_id":"b33130f0e2f3df6b7d80f3b5a10f0e2effdb273a"}],"octavia_tempest_plugin/services/v2/loadbalancer_client.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0e50438ad148d23f328624b21c37be9dd7fd8f00","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#   License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#   under the License."},{"line_number":15,"context_line":"#"},{"line_number":16,"context_line":"from tempest_lib import exceptions"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from octavia_tempest_plugin.services.v2 import base as client_base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f4e5783_55acb8eb","line":16,"range":{"start_line":16,"start_character":5,"end_line":16,"end_character":16},"updated":"2017-10-17 23:37:21.000000000","message":"This should be tempest.lib","commit_id":"6eacf45b29249eaacd92d96fa62ad04305b6cbc3"}],"octavia_tempest_plugin/tests/scenario/v2/base/base_loadbalancer.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f87f216b41a0e431407dfea51cf5126f0ee43ae","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":"from tempest.common import credentials_factory as common_creds"},{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from octavia_tempest_plugin import clients"},{"line_number":22,"context_line":"from octavia_tempest_plugin.services.load_balancer.common import waiters"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff5d4b2f_ad902997","line":19,"updated":"2017-09-19 04:36:53.000000000","message":"We cannot import test.  It is not on the stable interface list.","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f87f216b41a0e431407dfea51cf5126f0ee43ae","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                \u0027provisioning_status\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        lb \u003d self.lb_client.get_loadbalancer(lb[\u0027id\u0027])"},{"line_number":61,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, lb[\u0027provisioning_status\u0027])"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"        return lb"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"ff5d4b2f_6d2d9145","line":61,"updated":"2017-09-19 04:36:53.000000000","message":"Shouldn\u0027t we check operating status too?","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"}],"octavia_tempest_plugin/tests/scenario/v2/test_loadbalancer.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"5f87f216b41a0e431407dfea51cf5126f0ee43ae","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.lib import decorators"},{"line_number":20,"context_line":"from tempest.lib import exceptions as lib_exc"},{"line_number":21,"context_line":"from tempest import test"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from octavia_tempest_plugin import clients"},{"line_number":24,"context_line":"from octavia_tempest_plugin.services.load_balancer.common import waiters"}],"source_content_type":"text/x-python","patch_set":14,"id":"ff5d4b2f_0df735f8","line":21,"updated":"2017-09-19 04:36:53.000000000","message":"We cannot import test, it is not a stable interface.","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"0bcf4e647fabe00b5ab94922deb6d823369d25de","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        credentials \u003d common_creds.get_configured_admin_credentials("},{"line_number":41,"context_line":"            cls.credential_type, identity_version\u003dcls.identity_version)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        cls.clients \u003d clients.Manager(credentials)"},{"line_number":44,"context_line":"        cls.lb_client \u003d cls.clients.lb_client"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    @test.services(\u0027network\u0027, \u0027image\u0027, \u0027compute\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f2577a7_03854b5a","line":43,"updated":"2017-09-14 03:30:19.000000000","message":"I suggest we don\u0027t use admin user for the testing","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"0bcf4e647fabe00b5ab94922deb6d823369d25de","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    @decorators.idempotent_id(\u0027b49ab314-67a6-464e-b7a9-ee156bf1090a\u0027)"},{"line_number":50,"context_line":"    def test_crud_loadbalancer(self):"},{"line_number":51,"context_line":"        payload \u003d {\u0027loadbalancer\u0027: {"},{"line_number":52,"context_line":"            \u0027vip_network_id\u0027: CONF.octavia_tempest.vip_network_id,"},{"line_number":53,"context_line":"            \u0027name\u0027: \u0027TEMPEST_TEST_LB\u0027,"},{"line_number":54,"context_line":"            \u0027description\u0027: \u0027LB for Tempest tests\u0027}"},{"line_number":55,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":14,"id":"5f2577a7_e3d59f44","line":52,"updated":"2017-09-14 03:30:19.000000000","message":"In order to create lb for normal user, we should use the user\u0027s private subnet for the lb creation.","commit_id":"1b2036281c6a0c40e1b990c7bec10eb63928d8db"}],"octavia_tempest_plugin/tests/server_util.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"a2a24fff89f7e1c9e3d335f792e0b40bd340c95c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"SERVER_FILE_80 \u003d pkg_resources.resource_filename(\u0027octavia_tempest_plugin\u0027,"},{"line_number":34,"context_line":"                                                 \"contrib/run_server_80.sh\")"},{"line_number":35,"context_line":"SERVER_FILE_81 \u003d pkg_resources.resource_filename(\u0027octavia_tempest_plugin\u0027,"},{"line_number":36,"context_line":"                                                 \"contrib/run_server_81.sh\")"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"7f515b1d_d29163f3","line":34,"updated":"2017-10-06 03:58:52.000000000","message":"you\u0027re embedding a slash in here... it really is \"octavia_tempest_plugin.contrib\", \"run_server_80.sh\"\n\nAlso, couldn\u0027t you just have one file and have it take an arg for port? Having two files seems a bit weird.","commit_id":"4135777a7e7a67352ddbd3a0d53b896c7c9d544b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"53cd0cf2b1507e0be50f6efd1a5113cd0b6adf8e","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"def run_webserver(connect_ip, private_key):"},{"line_number":306,"context_line":"    httpd \u003d \"httpd.bin\""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    linux_client \u003d remote_client.RemoteClient("},{"line_number":309,"context_line":"        connect_ip,"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_db85c508","line":306,"range":{"start_line":306,"start_character":12,"end_line":306,"end_character":23},"updated":"2017-11-02 17:25:16.000000000","message":"Cirros only has 4MB available on /\nWe should use /dev/shm which has more space (using RAM)","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"82d01424f70117ca1753590fa354117c047a20e5","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"def run_webserver(connect_ip, private_key):"},{"line_number":306,"context_line":"    httpd \u003d \"httpd.bin\""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    linux_client \u003d remote_client.RemoteClient("},{"line_number":309,"context_line":"        connect_ip,"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_21cee72c","line":306,"range":{"start_line":306,"start_character":12,"end_line":306,"end_character":23},"in_reply_to":"3f4b6375_10869714","updated":"2017-11-02 19:48:54.000000000","message":"That is the mounted location and is writable.\nI can\u0027t answer the cross distro question, but don\u0027t we always boot the web servers with cirros?","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"2d611a45780b39a5ba3ff7198adae902c1e55526","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"def run_webserver(connect_ip, private_key):"},{"line_number":306,"context_line":"    httpd \u003d \"httpd.bin\""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    linux_client \u003d remote_client.RemoteClient("},{"line_number":309,"context_line":"        connect_ip,"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_f464c423","line":306,"range":{"start_line":306,"start_character":12,"end_line":306,"end_character":23},"in_reply_to":"3f4b6375_21cee72c","updated":"2017-11-07 03:12:10.000000000","message":"Done.\nWe boot ours with centos when testing in our cloud (we don\u0027t have a cirros image in our real cloud).","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3c1ea3c35f4d84128db671595b15d4aab5429e61","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"def run_webserver(connect_ip, private_key):"},{"line_number":306,"context_line":"    httpd \u003d \"httpd.bin\""},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    linux_client \u003d remote_client.RemoteClient("},{"line_number":309,"context_line":"        connect_ip,"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_10869714","line":306,"range":{"start_line":306,"start_character":12,"end_line":306,"end_character":23},"in_reply_to":"3f4b6375_db85c508","updated":"2017-11-02 18:09:36.000000000","message":"Is that a folder or a device? I assume it\u0027s a device? If so, where is that mounted by default, and is it the same across distros? Using ~/ right now because that is a path that\u0027s guaranteed to exist on any distro...","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"a7a114aa6a0a4441739659e3d4d63acc45f429c6","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        pkey\u003dprivate_key,"},{"line_number":312,"context_line":"    )"},{"line_number":313,"context_line":"    linux_client.validate_authentication()"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    # TODO(kong): We may figure out an elegant way to copy file to instance"},{"line_number":316,"context_line":"    # in future."},{"line_number":317,"context_line":"    LOG.debug(\"Copying the webserver binary to the server.\")"},{"line_number":318,"context_line":"    copy_file(connect_ip, private_key, SERVER_BINARY, httpd)"},{"line_number":319,"context_line":""}],"source_content_type":"text/x-python","patch_set":43,"id":"bf8cb3f7_81bb9870","line":316,"range":{"start_line":314,"start_character":0,"end_line":316,"end_character":16},"updated":"2017-12-24 10:23:53.000000000","message":"Hi all reviewers, \n\nI would like to attract your attention to this comment. In \"neutron-lbaas\" tree we have a way to copy file into the instance - this is how we do it there [1] \n\nWhy is it critical for us now ? \nI am moving neutron-lbaas tests to octavia plugin tree. And we have an issue with the session persistence test [2] and current way of running servers.\n\nIn the test \"SOURCE_IP\" persistence works well. \"HTTP_COOKIE\" works well, but \"APP_COOKIE\" fails. \n\nI ran on the same OCTAVIA setup (devstack) the neutron lbaas test - [3] and octavia test [2] and the difference I saw is one:\nThe responses in our current server for octavia are returning messy while with neutron-lbaas method they are good. I saw that bu tcpdumping in the amphora namespace. \n\nWe MUST reconsider to use neutron-lbaas \"_start_servers\" method [1], because digging in why the responses are messy can take along time. \n\n\n\n\n1- https://github.com/openstack/neutron-lbaas/blob/master/neutron_lbaas/tests/tempest/v2/scenario/base.py#L234\n\n2- https://review.openstack.org/#/c/529243/","commit_id":"638c4ef2a1c0a457bf70e5020fc92ca5cfc5da8f"}],"octavia_tempest_plugin/tests/v2/base.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"aa776730bf8abe5190586d28c560e601d52c6a4a","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                            \u0027actual provisioning_status: ERROR\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, lb[\u0027provisioning_status\u0027])"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ONLINE\u0027, lb[\u0027operating_status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        if name:"},{"line_number":151,"context_line":"            self.assertEqual(name, lb[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"7f515b1d_35d528e6","line":148,"updated":"2017-10-06 21:37:41.000000000","message":"You *cannot* rely on Operating Status. In fact, this will never work because operating status on a base loadbalancer with no members will NEVER be ONLINE. Ever.","commit_id":"7dfc5334c577ac2ed6ff7efa21871a7a90df750b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"dc9ea2907286111cb11e07d327210f20efaa16e1","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                            \u0027actual provisioning_status: ERROR\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, lb[\u0027provisioning_status\u0027])"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ONLINE\u0027, lb[\u0027operating_status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        if name:"},{"line_number":151,"context_line":"            self.assertEqual(name, lb[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"7f515b1d_d53a54e5","line":148,"in_reply_to":"7f515b1d_35d528e6","updated":"2017-10-06 21:52:12.000000000","message":"Did you try to run the test? At least from the test result, this assertion will pass. If what you said is true, maybe there is bug in the code. I will run the test again to double check.","commit_id":"7dfc5334c577ac2ed6ff7efa21871a7a90df750b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"a9ad4068107688665fbe83b718fcd4d754e89aec","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                            \u0027actual provisioning_status: ERROR\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, lb[\u0027provisioning_status\u0027])"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ONLINE\u0027, lb[\u0027operating_status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        if name:"},{"line_number":151,"context_line":"            self.assertEqual(name, lb[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"7f515b1d_a2fae371","line":148,"in_reply_to":"7f515b1d_87f94f81","updated":"2017-10-09 01:48:15.000000000","message":"If your health_manager works well, the lb final operating_status will be \u0027ONLINE\u0027 after lb is created. But in order to just test lb functionality, we could definitely remove this assertion.","commit_id":"7dfc5334c577ac2ed6ff7efa21871a7a90df750b"},{"author":{"_account_id":25674,"name":"Jude Cross","email":"jucross@blizzard.com","username":"problem_v"},"change_message_id":"bcefb7e9a63767181d4c47505958b7e511f658af","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                            \u0027actual provisioning_status: ERROR\u0027)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        self.assertEqual(\u0027ACTIVE\u0027, lb[\u0027provisioning_status\u0027])"},{"line_number":148,"context_line":"        self.assertEqual(\u0027ONLINE\u0027, lb[\u0027operating_status\u0027])"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"        if name:"},{"line_number":151,"context_line":"            self.assertEqual(name, lb[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":24,"id":"7f515b1d_87f94f81","line":148,"in_reply_to":"7f515b1d_d53a54e5","updated":"2017-10-06 22:22:00.000000000","message":"FWIW I couldn\u0027t get the test to pass until I deleted this assertion.","commit_id":"7dfc5334c577ac2ed6ff7efa21871a7a90df750b"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0e50438ad148d23f328624b21c37be9dd7fd8f00","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from oslo_log import log as logging"},{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":20,"context_line":"import tenacity"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f4e5783_d589c874","line":18,"range":{"start_line":18,"start_character":0,"end_line":18,"end_character":24},"updated":"2017-10-17 23:37:21.000000000","message":"We can\u0027t use this per: https://docs.openstack.org/tempest/latest/plugin.html#stable-tempest-apis-plugins-may-use","commit_id":"6eacf45b29249eaacd92d96fa62ad04305b6cbc3"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0e50438ad148d23f328624b21c37be9dd7fd8f00","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":18,"context_line":"from tempest import test"},{"line_number":19,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":20,"context_line":"import tenacity"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f4e5783_b57c0c72","line":19,"range":{"start_line":19,"start_character":5,"end_line":19,"end_character":16},"updated":"2017-10-17 23:37:21.000000000","message":"Shouldn\u0027t this be tempest.lib?","commit_id":"6eacf45b29249eaacd92d96fa62ad04305b6cbc3"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0d5f1617e4605d7d0daa3e4c3fd544c721b24e83","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":18,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":"import tenacity"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f4e5783_f5d4c449","line":19,"updated":"2017-10-17 23:39:21.000000000","message":"Can\u0027t use this per: https://docs.openstack.org/tempest/latest/plugin.html#stable-tempest-apis-plugins-may-use","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"58236f03ae2a21f66ed2a7536257a8d8fd274b06","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from tempest import config"},{"line_number":17,"context_line":"from tempest.lib.common.utils import data_utils"},{"line_number":18,"context_line":"from tempest.lib.common.utils import test_utils"},{"line_number":19,"context_line":"from tempest import test"},{"line_number":20,"context_line":"import tenacity"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"CONF \u003d config.CONF"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f4e5783_361a6216","line":19,"in_reply_to":"5f4e5783_f5d4c449","updated":"2017-10-18 02:47:30.000000000","message":"It\u0027ll be added to the stable interface list when the new tempest release happens, which we need for the validations anyway.","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"419be7404baf33efb0b4d813f8d1db65a18d0d46","unresolved":false,"context_lines":[{"line_number":127,"context_line":"                )"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"                cls.routers_adm_client.add_router_interface("},{"line_number":130,"context_line":"                    cls.router_id, subnet_id\u003dcls.subnet_id"},{"line_number":131,"context_line":"                )"},{"line_number":132,"context_line":"                cls.addClassResourceCleanup("},{"line_number":133,"context_line":"                    test_utils.call_and_ignore_notfound_exc,"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f4b6375_44bef565","line":130,"range":{"start_line":130,"start_character":45,"end_line":130,"end_character":58},"updated":"2017-10-19 23:36:47.000000000","message":"should be cls.member_subnet_id","commit_id":"3354cfa0c747a865600385d1b70e8ef2d84a419b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"419be7404baf33efb0b4d813f8d1db65a18d0d46","unresolved":false,"context_lines":[{"line_number":133,"context_line":"                    test_utils.call_and_ignore_notfound_exc,"},{"line_number":134,"context_line":"                    cls.routers_adm_client.remove_router_interface,"},{"line_number":135,"context_line":"                    cls.router_id,"},{"line_number":136,"context_line":"                    subnet_id\u003dcls.subnet_id"},{"line_number":137,"context_line":"                )"},{"line_number":138,"context_line":"        else:"},{"line_number":139,"context_line":"            cls.vip_network_id \u003d CONF.loadbalancer.vip_network_id"}],"source_content_type":"text/x-python","patch_set":32,"id":"3f4b6375_b53b91cf","line":136,"range":{"start_line":136,"start_character":30,"end_line":136,"end_character":43},"updated":"2017-10-19 23:36:47.000000000","message":"ditto","commit_id":"3354cfa0c747a865600385d1b70e8ef2d84a419b"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"aa707e82aa2b0e377e8e28660cd6d1a9309954f1","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class BaseLoadbalancerTest(test.BaseTestCase):"},{"line_number":33,"context_line":"    credentials \u003d ([\u0027lbmember\u0027, \u0027load-balancer_member\u0027], \u0027admin\u0027)"},{"line_number":34,"context_line":"    name_prefix \u003d \u0027Tempest-BaseLoadbalancerTest\u0027"},{"line_number":35,"context_line":"    vip_network_id \u003d None"},{"line_number":36,"context_line":"    vip_subnet_id \u003d None"}],"source_content_type":"text/x-python","patch_set":36,"id":"3f4b6375_fc08edd9","line":33,"range":{"start_line":33,"start_character":33,"end_line":33,"end_character":53},"updated":"2017-10-30 10:24:19.000000000","message":"Can we make this configurable?","commit_id":"cfe10ada2bf737b80c39c70c58caa60790aadce0"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"c21769f2fde3695b31e9ae5079837bfbc1621610","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"class BaseLoadbalancerTest(test.BaseTestCase):"},{"line_number":33,"context_line":"    credentials \u003d ([\u0027lbmember\u0027, \u0027load-balancer_member\u0027], \u0027admin\u0027)"},{"line_number":34,"context_line":"    name_prefix \u003d \u0027Tempest-BaseLoadbalancerTest\u0027"},{"line_number":35,"context_line":"    vip_network_id \u003d None"},{"line_number":36,"context_line":"    vip_subnet_id \u003d None"}],"source_content_type":"text/x-python","patch_set":36,"id":"3f4b6375_ba02603d","line":33,"range":{"start_line":33,"start_character":33,"end_line":33,"end_character":53},"in_reply_to":"3f4b6375_fc08edd9","updated":"2017-10-31 00:59:32.000000000","message":"Done","commit_id":"cfe10ada2bf737b80c39c70c58caa60790aadce0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d982df57a5de68a2623630a72628daadf825bfdd","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        return floatip_vip"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def create_backend(self):"},{"line_number":476,"context_line":"        if self.vm_ip:"},{"line_number":477,"context_line":"            return"},{"line_number":478,"context_line":"        elif CONF.loadbalancer.premade_server_ip:"},{"line_number":479,"context_line":"            self.vm_ip \u003d CONF.loadbalancer.premade_server_ip"}],"source_content_type":"text/x-python","patch_set":36,"id":"3f4b6375_9bff8a00","line":476,"updated":"2017-10-21 02:36:35.000000000","message":"This was a half-baked attempt at quickly making this a singleton, which I realize now doesn\u0027t actually work. There\u0027s a number of other things I\u0027d have to tweak as well anyway, like the cleanups and such.\n\nOf course, I\u0027m also still debating whether this CAN and SHOULD be a singleton, due to the networking stuff involved. Probably we could make that stuff a singleton too, but I\u0027m really just not sure how much I care. It saves a little bit of time/resources because right now for traffic tests it\u0027s one vm-spin per test, which in some environments is not a cheap operation, but it also adds complexity.","commit_id":"cfe10ada2bf737b80c39c70c58caa60790aadce0"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"ed4c29d4a4d5f1fdde133966fb4132776c0f3e4a","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        return floatip_vip"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"    def create_backend(self):"},{"line_number":476,"context_line":"        if self.vm_ip:"},{"line_number":477,"context_line":"            return"},{"line_number":478,"context_line":"        elif CONF.loadbalancer.premade_server_ip:"},{"line_number":479,"context_line":"            self.vm_ip \u003d CONF.loadbalancer.premade_server_ip"}],"source_content_type":"text/x-python","patch_set":36,"id":"3f4b6375_564b0e58","line":476,"in_reply_to":"3f4b6375_9bff8a00","updated":"2017-10-23 12:00:34.000000000","message":"I agree that using singleton could make the tests run much faster, but can we improve it in a separate patch later on after merging this one? I really want to have an available octavia tempest plugin in our monitoring solution.","commit_id":"cfe10ada2bf737b80c39c70c58caa60790aadce0"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"1fd0270501582ee41e6f87449b095d8ceb76575b","unresolved":false,"context_lines":[{"line_number":477,"context_line":"        LOG.debug(\u0027Floating ip %s associated with vip.\u0027, floatip_vip)"},{"line_number":478,"context_line":"        return floatip_vip"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"    def create_backend(self):"},{"line_number":481,"context_line":"        if CONF.loadbalancer.premade_server_ip:"},{"line_number":482,"context_line":"            self.vm_ip \u003d CONF.loadbalancer.premade_server_ip"},{"line_number":483,"context_line":"            return"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_30e753af","line":480,"range":{"start_line":480,"start_character":0,"end_line":480,"end_character":29},"updated":"2017-11-02 18:18:48.000000000","message":"The VM is not attached with proper security group. It uses defaukt instead of the SG created by the test","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"56a43965f35a9d768fcbed8076c97a4546e5b580","unresolved":false,"context_lines":[{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        self.assertIsNotNone(self.vm_ip)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":516,"context_line":"            connect_ip \u003d vr_resources[\u0027floating_ip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":517,"context_line":"        else:"},{"line_number":518,"context_line":"            connect_ip \u003d self.vm_ip"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        server_util.run_webserver("},{"line_number":521,"context_line":"            connect_ip,"}],"source_content_type":"text/x-python","patch_set":40,"id":"1f485f77_8ce8c616","line":518,"range":{"start_line":515,"start_character":8,"end_line":518,"end_character":35},"updated":"2017-11-09 14:22:03.000000000","message":"The FIP is not assigned to the VM port. I ran the test and used breaking points to see what happens when , and the result is :\n\nhttp://paste.openstack.org/show/625936/\n\nthis is the outcome: \n\nhttp://paste.openstack.org/show/625937/\n\nThe fip is not assigned to VM port and the VM is booted with default SG and not the one created by the test","commit_id":"55708482308ba0185ebaa6b18b6c6e3830163717"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"4e756e09dcdf31e9a78af9190cb553b3f3ecd43f","unresolved":false,"context_lines":[{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        self.assertIsNotNone(self.vm_ip)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":516,"context_line":"            connect_ip \u003d vr_resources[\u0027floating_ip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":517,"context_line":"        else:"},{"line_number":518,"context_line":"            connect_ip \u003d self.vm_ip"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        server_util.run_webserver("},{"line_number":521,"context_line":"            connect_ip,"}],"source_content_type":"text/x-python","patch_set":40,"id":"1f485f77_fb9fd3b1","line":518,"range":{"start_line":515,"start_character":8,"end_line":518,"end_character":35},"in_reply_to":"1f485f77_1b4d0f72","updated":"2017-11-11 09:55:25.000000000","message":"The if condition is answered- pls see \nhttp://paste.openstack.org/show/626059/","commit_id":"55708482308ba0185ebaa6b18b6c6e3830163717"},{"author":{"_account_id":6579,"name":"Nir Magnezi","email":"nmagnezi@redhat.com","username":"nmagnezi"},"change_message_id":"28e2a9b54306b4d5d6406a79619db68703fe8baa","unresolved":false,"context_lines":[{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        self.assertIsNotNone(self.vm_ip)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":516,"context_line":"            connect_ip \u003d vr_resources[\u0027floating_ip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":517,"context_line":"        else:"},{"line_number":518,"context_line":"            connect_ip \u003d self.vm_ip"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        server_util.run_webserver("},{"line_number":521,"context_line":"            connect_ip,"}],"source_content_type":"text/x-python","patch_set":40,"id":"1f485f77_ec461a22","line":518,"range":{"start_line":515,"start_character":8,"end_line":518,"end_character":35},"in_reply_to":"1f485f77_8ce8c616","updated":"2017-11-09 14:32:33.000000000","message":"+1\n\nI don\u0027t get where the FIP gets attached to the instance.","commit_id":"55708482308ba0185ebaa6b18b6c6e3830163717"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"31950c36a326431e1caca4b696e9b86f29587ea0","unresolved":false,"context_lines":[{"line_number":512,"context_line":""},{"line_number":513,"context_line":"        self.assertIsNotNone(self.vm_ip)"},{"line_number":514,"context_line":""},{"line_number":515,"context_line":"        if CONF.validation.connect_method \u003d\u003d \u0027floating\u0027:"},{"line_number":516,"context_line":"            connect_ip \u003d vr_resources[\u0027floating_ip\u0027][\u0027floating_ip_address\u0027]"},{"line_number":517,"context_line":"        else:"},{"line_number":518,"context_line":"            connect_ip \u003d self.vm_ip"},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        server_util.run_webserver("},{"line_number":521,"context_line":"            connect_ip,"}],"source_content_type":"text/x-python","patch_set":40,"id":"1f485f77_1b4d0f72","line":518,"range":{"start_line":515,"start_character":8,"end_line":518,"end_character":35},"in_reply_to":"1f485f77_ec461a22","updated":"2017-11-11 09:47:04.000000000","message":"what\u0027s the CONF.validation.run_validation in your tempest config file? It should be \u0027True\u0027.","commit_id":"55708482308ba0185ebaa6b18b6c6e3830163717"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"40bcf734bed92c14ac5c5a37df887b97dd1158db","unresolved":false,"context_lines":[{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        server_util.run_webserver("},{"line_number":521,"context_line":"            connect_ip,"},{"line_number":522,"context_line":"            vr_resources[\u0027keypair\u0027][\u0027private_key\u0027]"},{"line_number":523,"context_line":"        )"},{"line_number":524,"context_line":"        LOG.debug(\u0027Web servers are running inside %s\u0027, vm[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":40,"id":"1f485f77_6c3b4a9c","line":522,"range":{"start_line":522,"start_character":12,"end_line":522,"end_character":50},"updated":"2017-11-09 14:26:16.000000000","message":"The vm is booted with no keypair \n\nhttp://paste.openstack.org/show/625939/","commit_id":"55708482308ba0185ebaa6b18b6c6e3830163717"}],"octavia_tempest_plugin/tests/v2/scenario/test_basic_ops.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afcb0ea298f490a573dba870093ef2a65ebc29fb","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"import requests"},{"line_number":23,"context_line":"from tempest.common import compute as compute_util"},{"line_number":24,"context_line":"from tempest.common import waiters"},{"line_number":25,"context_line":"from tempest import config"},{"line_number":26,"context_line":"from tempest.lib.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_7ead1530","line":23,"updated":"2017-10-04 16:24:21.000000000","message":"We can\u0027t use this.\n\nWhy don\u0027t we use python-openstacksdk?","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7ad7d2844afeb470375a2209c29da919f1a76c18","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"import requests"},{"line_number":23,"context_line":"from tempest.common import compute as compute_util"},{"line_number":24,"context_line":"from tempest.common import waiters"},{"line_number":25,"context_line":"from tempest import config"},{"line_number":26,"context_line":"from tempest.lib.common.utils import data_utils"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_25730150","line":23,"in_reply_to":"7f515b1d_7ead1530","updated":"2017-10-04 20:42:01.000000000","message":"I do think that compute_util has a lot of value-add above and beyond just using the openstacksdk, I guess it\u0027s a shame if that\u0027s not considered a stable interface and therefore can\u0027t use it... But, there\u0027s also a built-in tempest client for compute we CAN use, isn\u0027t there? The one set below as \"cls.servers_client\" in the setup?","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7ad7d2844afeb470375a2209c29da919f1a76c18","unresolved":false,"context_lines":[{"line_number":36,"context_line":"SERVER_FILE \u003d os.path.abspath("},{"line_number":37,"context_line":"    os.path.join(os.path.dirname(__file__),"},{"line_number":38,"context_line":"                 \u0027../../../contrib/run_server.sh\u0027)"},{"line_number":39,"context_line":")"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class BasicOpsTest(base.BaseLoadbalancerTest):"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_0505a57a","line":39,"updated":"2017-10-04 20:42:01.000000000","message":"I believe a more explicit way to do this is with pkg_resources, like this:\n\nSERVER_FILE \u003d pkg_resources.resource_string(\n    \u0027octavia_tempest_plugin.contrib\u0027, \u0027run_server.sh\u0027)","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e0db0c0b559db955a34037cc3ef5d1bf55cbe85e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"            direction\u003d\u0027ingress\u0027"},{"line_number":85,"context_line":"        )"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def _clear_server(self, id):"},{"line_number":88,"context_line":"        test_utils.call_and_ignore_notfound_exc("},{"line_number":89,"context_line":"            self.servers_client.delete_server, id"},{"line_number":90,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_d44abeaa","line":87,"updated":"2017-10-04 01:52:48.000000000","message":"Can ALL of these functions move up to either base.py or some other util that is included, so we can use them in other loadbalancer test files easily?","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e0db0c0b559db955a34037cc3ef5d1bf55cbe85e","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            dest \u003d ("},{"line_number":116,"context_line":"                \"%s@%s:%s\" % (CONF.validation.image_ssh_user, ip, file_path)"},{"line_number":117,"context_line":"            )"},{"line_number":118,"context_line":"            cmd \u003d (\"scp -v -o UserKnownHostsFile\u003d/dev/null \""},{"line_number":119,"context_line":"                   \"-o StrictHostKeyChecking\u003dno \""},{"line_number":120,"context_line":"                   \"-i %(key_file)s %(file)s %(dest)s\" % {\u0027key_file\u0027: key.name,"},{"line_number":121,"context_line":"                                                          \u0027file\u0027: SERVER_FILE,"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_34023240","line":118,"updated":"2017-10-04 01:52:48.000000000","message":"Can we avoid a lot of the wonky stuff going on here (saving the key as a tempfile, creating the file ahead of time to avoid perm errors, etc) and just switch to using paramiko to do the SSH interactions with the remote host? Or, at least the *file* interactions, if we want to continue to use whatever tempest uses for basic remote ssh commands.","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"afcb0ea298f490a573dba870093ef2a65ebc29fb","unresolved":false,"context_lines":[{"line_number":115,"context_line":"            dest \u003d ("},{"line_number":116,"context_line":"                \"%s@%s:%s\" % (CONF.validation.image_ssh_user, ip, file_path)"},{"line_number":117,"context_line":"            )"},{"line_number":118,"context_line":"            cmd \u003d (\"scp -v -o UserKnownHostsFile\u003d/dev/null \""},{"line_number":119,"context_line":"                   \"-o StrictHostKeyChecking\u003dno \""},{"line_number":120,"context_line":"                   \"-i %(key_file)s %(file)s %(dest)s\" % {\u0027key_file\u0027: key.name,"},{"line_number":121,"context_line":"                                                          \u0027file\u0027: SERVER_FILE,"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_3ef9dd4c","line":118,"in_reply_to":"7f515b1d_34023240","updated":"2017-10-04 16:24:21.000000000","message":"+1\nLet\u0027s not use command lines, but use paramiko","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"7ad7d2844afeb470375a2209c29da919f1a76c18","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            wait_until\u003d\u0027ACTIVE\u0027,"},{"line_number":136,"context_line":"            name\u003dname,"},{"line_number":137,"context_line":"            tenant_network\u003d{\u0027id\u0027: self.network_id},"},{"line_number":138,"context_line":"            adminPass\u003dpassword"},{"line_number":139,"context_line":"        )"},{"line_number":140,"context_line":"        self.addCleanup(self._clear_server, vm[\u0027id\u0027])"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_25a8a175","line":138,"updated":"2017-10-04 20:42:01.000000000","message":"Unless I\u0027m misunderstanding this, I don\u0027t know that it\u0027s always possible to use this... I think before we had an option to specify whether it was possible or not to set an adminPass?","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e0db0c0b559db955a34037cc3ef5d1bf55cbe85e","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    def _create_servers(self):"},{"line_number":166,"context_line":"        \"\"\"Creates 2 instances."},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        Both instances are running a simple web server."},{"line_number":169,"context_line":"        \"\"\""},{"line_number":170,"context_line":"        vm_name_1 \u003d data_utils.rand_name(\"instance\", prefix\u003dself.name_prefix)"},{"line_number":171,"context_line":"        self._create_server(vm_name_1, self.vr.resources)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f515b1d_f44dbac4","line":168,"updated":"2017-10-04 01:52:48.000000000","message":"Really we should only create one server and simply run a webserver on multiple ports -- that increases test speed and reduces overhead.","commit_id":"e861f48fae51f54a2595c5a1066e34ca4f0d99a2"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"b61e30d1587be7e4595603fa85fed5fa3c384078","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            self.floatingip_adm_client.delete_floatingip, floating_ip"},{"line_number":84,"context_line":"        )"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _wait_for_lb_functional(self, vip_address):"},{"line_number":87,"context_line":"        session \u003d requests.Session()"},{"line_number":88,"context_line":"        start \u003d time.time()"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5f4e5783_d2e63ee9","line":86,"updated":"2017-10-10 21:12:48.000000000","message":"The vip_address here is fixed_ip of the lb and is not always routable outside of the deployment.","commit_id":"c66efece4caf92e914f60c00051370d35698b983"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"28678d68a600d7f4ad0b83f7bd916e7c90392290","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            self.floatingip_adm_client.delete_floatingip, floating_ip"},{"line_number":84,"context_line":"        )"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def _wait_for_lb_functional(self, vip_address):"},{"line_number":87,"context_line":"        session \u003d requests.Session()"},{"line_number":88,"context_line":"        start \u003d time.time()"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5f4e5783_12d9047e","line":86,"in_reply_to":"5f4e5783_d2e63ee9","updated":"2017-10-14 09:14:59.000000000","message":"It should now respect `CONF.validation.connect_method \u003d \u0027floating\u0027` and use a floating IP, or else \u0027fixed\u0027 to use the fixed IP.\nThe default is \u0027floating\u0027.","commit_id":"c66efece4caf92e914f60c00051370d35698b983"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0e50438ad148d23f328624b21c37be9dd7fd8f00","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from tempest import config"},{"line_number":19,"context_line":"from tempest.lib.common import validation_resources as vr"},{"line_number":20,"context_line":"from tempest.lib import decorators"},{"line_number":21,"context_line":"from tempest_lib import exceptions as lib_exc"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from octavia_tempest_plugin.tests import server_util"},{"line_number":24,"context_line":"from octavia_tempest_plugin.tests.v2 import base"}],"source_content_type":"text/x-python","patch_set":30,"id":"5f4e5783_759a14b9","line":21,"range":{"start_line":21,"start_character":5,"end_line":21,"end_character":16},"updated":"2017-10-17 23:37:21.000000000","message":"Why not tempest.lib?","commit_id":"6eacf45b29249eaacd92d96fa62ad04305b6cbc3"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"c33a5a6d71691943c9620a7ef8af793a1f9b00a2","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class BasicOpsTest(base.BaseLoadbalancerTest):"},{"line_number":31,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":32,"context_line":"    name_prefix \u003d \u0027Tempest-BasicOpsTest\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f4e5783_db521713","line":31,"updated":"2017-10-18 02:03:50.000000000","message":"You could remove this line, the default value of \u0027force_tenant_isolation\u0027 in parent class is False","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"f8e67845695184c04f9079cf7fa374e4b12b618f","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class BasicOpsTest(base.BaseLoadbalancerTest):"},{"line_number":31,"context_line":"    force_tenant_isolation \u003d False"},{"line_number":32,"context_line":"    name_prefix \u003d \u0027Tempest-BasicOpsTest\u0027"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":31,"id":"3f4b6375_9d590200","line":31,"in_reply_to":"5f4e5783_db521713","updated":"2017-10-18 20:27:46.000000000","message":"Done","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"},{"author":{"_account_id":6732,"name":"Lingxian Kong","email":"anlin.kong@gmail.com","username":"kong"},"change_message_id":"c33a5a6d71691943c9620a7ef8af793a1f9b00a2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        session \u003d requests.Session()"},{"line_number":93,"context_line":"        port_counts \u003d {}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self._wait_for_lb_functional(self.vip_address)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Send 20 requests to lb vip"},{"line_number":98,"context_line":"        for i in range(10):"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f4e5783_bb7cfb71","line":95,"range":{"start_line":95,"start_character":37,"end_line":95,"end_character":53},"updated":"2017-10-18 02:03:50.000000000","message":"The address here is still a fixed ip in neutron, it\u0027s not accessible in our deployment. Please see PS25","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"58236f03ae2a21f66ed2a7536257a8d8fd274b06","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        session \u003d requests.Session()"},{"line_number":93,"context_line":"        port_counts \u003d {}"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        self._wait_for_lb_functional(self.vip_address)"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"        # Send 20 requests to lb vip"},{"line_number":98,"context_line":"        for i in range(10):"}],"source_content_type":"text/x-python","patch_set":31,"id":"5f4e5783_f6304aa1","line":95,"range":{"start_line":95,"start_character":37,"end_line":95,"end_character":53},"in_reply_to":"5f4e5783_bb7cfb71","updated":"2017-10-18 02:47:30.000000000","message":"Alright, I\u0027ll see if we can make this create a second FLIP.","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"f740ab15eee562d5a9e2fc216cb0671dce2b6c00","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        # Setup network resources for instance"},{"line_number":33,"context_line":"        resources \u003d dict("},{"line_number":34,"context_line":"            keypair\u003dTrue,"},{"line_number":35,"context_line":"            security_group\u003dTrue,"},{"line_number":36,"context_line":"            security_group_rules\u003dTrue,"},{"line_number":37,"context_line":"            floating_ip\u003dCONF.validation.connect_method \u003d\u003d \u0027floating\u0027"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_ca5bbcf3","line":34,"range":{"start_line":34,"start_character":12,"end_line":34,"end_character":19},"updated":"2017-11-02 12:11:48.000000000","message":"After assigning the FIP and SG properly the authentication still fails : \n2017-11-02 12:10:54.532 265 INFO paramiko.transport [-] Connected (version 2.0, client dropbear_2012.55)\n2017-11-02 12:10:54.687 265 INFO paramiko.transport [-] Authentication (publickey) failed.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3c1ea3c35f4d84128db671595b15d4aab5429e61","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        # Setup network resources for instance"},{"line_number":33,"context_line":"        resources \u003d dict("},{"line_number":34,"context_line":"            keypair\u003dTrue,"},{"line_number":35,"context_line":"            security_group\u003dTrue,"},{"line_number":36,"context_line":"            security_group_rules\u003dTrue,"},{"line_number":37,"context_line":"            floating_ip\u003dCONF.validation.connect_method \u003d\u003d \u0027floating\u0027"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_d0a0ff92","line":34,"range":{"start_line":34,"start_character":12,"end_line":34,"end_character":19},"in_reply_to":"3f4b6375_ca5bbcf3","updated":"2017-11-02 18:09:36.000000000","message":"That\u0027s to do with the keypair, not the FIP or SG. I wonder if your users are set up properly or if your image is not respecting the key we set?","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"bca3be95fcd1f1cb38755a6ecb1b51f99385ac41","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        # Setup network resources for instance"},{"line_number":33,"context_line":"        resources \u003d dict("},{"line_number":34,"context_line":"            keypair\u003dTrue,"},{"line_number":35,"context_line":"            security_group\u003dTrue,"},{"line_number":36,"context_line":"            security_group_rules\u003dTrue,"},{"line_number":37,"context_line":"            floating_ip\u003dCONF.validation.connect_method \u003d\u003d \u0027floating\u0027"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_f089bbc9","line":34,"range":{"start_line":34,"start_character":12,"end_line":34,"end_character":19},"in_reply_to":"3f4b6375_d0a0ff92","updated":"2017-11-02 18:20:09.000000000","message":"My next comment regarding the FIP and SG. The test is not assigning FIP to VM, and the SG is default and not the needed one.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":18746,"name":"Alex Stafeyev","email":"alexo101087@gmail.com","username":"AlexSTafeyev"},"change_message_id":"83755e99f5805cae5f422c9df54e8125e7e23401","unresolved":false,"context_lines":[{"line_number":26,"context_line":"class BasicOpsTest(base.BaseLoadbalancerTest):"},{"line_number":27,"context_line":"    name_prefix \u003d \u0027Tempest-BasicOpsTest\u0027"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def setUp(self):"},{"line_number":30,"context_line":"        super(BasicOpsTest, self).setUp()"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        # Setup network resources for instance"},{"line_number":33,"context_line":"        resources \u003d dict("},{"line_number":34,"context_line":"            keypair\u003dTrue,"},{"line_number":35,"context_line":"            security_group\u003dTrue,"},{"line_number":36,"context_line":"            security_group_rules\u003dTrue,"},{"line_number":37,"context_line":"            floating_ip\u003dCONF.validation.connect_method \u003d\u003d \u0027floating\u0027"},{"line_number":38,"context_line":"        )"},{"line_number":39,"context_line":"        self.vr \u003d self.useFixture("},{"line_number":40,"context_line":"            vr.ValidationResourcesFixture("},{"line_number":41,"context_line":"                self.os_roles_lbmember,"},{"line_number":42,"context_line":"                use_neutron\u003dTrue,"},{"line_number":43,"context_line":"                floating_network_id\u003dCONF.network.public_network_id,"},{"line_number":44,"context_line":"                **resources"},{"line_number":45,"context_line":"            )"},{"line_number":46,"context_line":"        )"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        # Add security group rule to allow http request"},{"line_number":49,"context_line":"        self.sg_rule_client.create_security_group_rule("},{"line_number":50,"context_line":"            security_group_id\u003dself.vr.resources[\u0027security_group\u0027][\u0027id\u0027],"},{"line_number":51,"context_line":"            protocol\u003d\u0027tcp\u0027,"},{"line_number":52,"context_line":"            ethertype\u003d\u0027IPv4\u0027,"},{"line_number":53,"context_line":"            port_range_min\u003d80,"},{"line_number":54,"context_line":"            port_range_max\u003d81,"},{"line_number":55,"context_line":"            direction\u003d\u0027ingress\u0027"},{"line_number":56,"context_line":"        )"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.create_backend()"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_cf0f4e86","line":56,"range":{"start_line":29,"start_character":0,"end_line":56,"end_character":9},"updated":"2017-11-02 11:57:13.000000000","message":"I ran the test on my env. \n\nSeveral behavior gaps I saw : \n\n1. The FIP is created but is not attached to the created VM \n2. The SG which is created (and allows ssh into the VM) is not used . the VM ( and its neutron port) are attached to default SG. \n\nThis results with test failure : \ntempest.lib.exceptions.SSHTimeout: Connection to the 10.0.0.211 via SSH timed out.\nUser: cirros, Password: None","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"}],"octavia_tempest_plugin/tests/v2/scenario/test_loadbalancer.py":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0e50438ad148d23f328624b21c37be9dd7fd8f00","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#   License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#   under the License."},{"line_number":15,"context_line":"from tempest.lib import decorators"},{"line_number":16,"context_line":"from tempest_lib.common.utils import data_utils"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from octavia_tempest_plugin.tests.v2 import base"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"5f4e5783_f5eba40f","line":16,"range":{"start_line":16,"start_character":5,"end_line":16,"end_character":16},"updated":"2017-10-17 23:37:21.000000000","message":"Why not tempest.lib?","commit_id":"6eacf45b29249eaacd92d96fa62ad04305b6cbc3"}],"requirements.txt":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"0d5f1617e4605d7d0daa3e4c3fd544c721b24e83","unresolved":false,"context_lines":[{"line_number":5,"context_line":"pbr\u003e\u003d2.0.0,!\u003d2.1.0  # Apache-2.0"},{"line_number":6,"context_line":"oslotest\u003e\u003d1.10.0  # Apache-2.0"},{"line_number":7,"context_line":"tempest\u003e\u003d16.1.0  # Apache-2.0"},{"line_number":8,"context_line":"tempest-lib\u003e\u003d1.0.0  # Apache-2.0"},{"line_number":9,"context_line":"tenacity\u003e\u003d3.2.1  # Apache-2.0"}],"source_content_type":"text/plain","patch_set":31,"id":"5f4e5783_75dfb468","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":32},"updated":"2017-10-17 23:39:21.000000000","message":"Not used.","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"58236f03ae2a21f66ed2a7536257a8d8fd274b06","unresolved":false,"context_lines":[{"line_number":5,"context_line":"pbr\u003e\u003d2.0.0,!\u003d2.1.0  # Apache-2.0"},{"line_number":6,"context_line":"oslotest\u003e\u003d1.10.0  # Apache-2.0"},{"line_number":7,"context_line":"tempest\u003e\u003d16.1.0  # Apache-2.0"},{"line_number":8,"context_line":"tempest-lib\u003e\u003d1.0.0  # Apache-2.0"},{"line_number":9,"context_line":"tenacity\u003e\u003d3.2.1  # Apache-2.0"}],"source_content_type":"text/plain","patch_set":31,"id":"5f4e5783_b6265267","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":32},"in_reply_to":"5f4e5783_75dfb468","updated":"2017-10-18 02:47:30.000000000","message":"Done","commit_id":"2eb5966cbacce0b81d6600e9c0c5c4e8a42b63bf"}],"setup.cfg":[{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"53cd0cf2b1507e0be50f6efd1a5113cd0b6adf8e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"[files]"},{"line_number":26,"context_line":"packages \u003d"},{"line_number":27,"context_line":"    octavia_tempest_plugin"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"[build_sphinx]"},{"line_number":30,"context_line":"source-dir \u003d doc/source"},{"line_number":31,"context_line":"build-dir \u003d doc/build"}],"source_content_type":"text/x-ttcn-cfg","patch_set":39,"id":"3f4b6375_dbf4a5f3","line":28,"updated":"2017-11-02 17:25:16.000000000","message":"Do we need to add a \"data_files\" section here to package the httpd in the pypi package?\nSee octavia setup.cfg for an example.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"3c1ea3c35f4d84128db671595b15d4aab5429e61","unresolved":false,"context_lines":[{"line_number":25,"context_line":"[files]"},{"line_number":26,"context_line":"packages \u003d"},{"line_number":27,"context_line":"    octavia_tempest_plugin"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"[build_sphinx]"},{"line_number":30,"context_line":"source-dir \u003d doc/source"},{"line_number":31,"context_line":"build-dir \u003d doc/build"}],"source_content_type":"text/x-ttcn-cfg","patch_set":39,"id":"3f4b6375_f07e5b17","line":28,"in_reply_to":"3f4b6375_dbf4a5f3","updated":"2017-11-02 18:09:36.000000000","message":"Possibly, will look into it.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"2d611a45780b39a5ba3ff7198adae902c1e55526","unresolved":false,"context_lines":[{"line_number":25,"context_line":"[files]"},{"line_number":26,"context_line":"packages \u003d"},{"line_number":27,"context_line":"    octavia_tempest_plugin"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"[build_sphinx]"},{"line_number":30,"context_line":"source-dir \u003d doc/source"},{"line_number":31,"context_line":"build-dir \u003d doc/build"}],"source_content_type":"text/x-ttcn-cfg","patch_set":39,"id":"3f4b6375_3457fc28","line":28,"in_reply_to":"3f4b6375_f07e5b17","updated":"2017-11-07 03:12:10.000000000","message":"I think we don\u0027t, since the file is included in the main package tree.","commit_id":"80070774b36e23fc3280f5f3b86918d078bec696"}]}
