)]}'
{"octavia_tempest_plugin/config.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":91,"context_line":"    cfg.StrOpt(\u0027test_network_override\u0027,"},{"line_number":92,"context_line":"               help\u003d\u0027Overrides network creation and uses this network ID for \u0027"},{"line_number":93,"context_line":"                    \u0027all tests (VIP, members, etc.)\u0027),"},{"line_number":94,"context_line":"    cfg.StrOpt(\u0027test_subnet_override\u0027,"},{"line_number":95,"context_line":"               help\u003d\u0027Overrides subnet creation and uses this subnet ID for \u0027"},{"line_number":96,"context_line":"                    \u0027all IPv4 tests (VIP, members, etc.). Required if \u0027"},{"line_number":97,"context_line":"                    \u0027test_network_override is set.\u0027),"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_daae762d","line":94,"updated":"2018-03-02 03:05:22.000000000","message":"I need to look at how this will work -- right now we ONLY override the network, and somehow manage to not pass in a subnet at all (because our subnets are ... autoselected by nova, and LBs use a FLIP network not a subnet). This may need to be able to be blank.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    \u0027test_network_override is set.\u0027),"},{"line_number":98,"context_line":"    cfg.StrOpt(\u0027test_IPv6_subnet_override\u0027,"},{"line_number":99,"context_line":"               help\u003d\u0027Overrides subnet creation and uses this subnet ID for \u0027"},{"line_number":100,"context_line":"                    \u0027all IPv4 tests (VIP, members, etc.). Optional and only \u0027"},{"line_number":101,"context_line":"                    \u0027valid if test_network_override is set.\u0027),"},{"line_number":102,"context_line":"    cfg.StrOpt(\u0027vip_subnet_cidr\u0027,"},{"line_number":103,"context_line":"               default\u003d\u002710.1.1.0/24\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fab7b285","line":100,"updated":"2018-03-02 03:05:22.000000000","message":"I assume you meant \"all IPv6 tests\".","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    \u0027test_network_override is set.\u0027),"},{"line_number":98,"context_line":"    cfg.StrOpt(\u0027test_IPv6_subnet_override\u0027,"},{"line_number":99,"context_line":"               help\u003d\u0027Overrides subnet creation and uses this subnet ID for \u0027"},{"line_number":100,"context_line":"                    \u0027all IPv4 tests (VIP, members, etc.). Optional and only \u0027"},{"line_number":101,"context_line":"                    \u0027valid if test_network_override is set.\u0027),"},{"line_number":102,"context_line":"    cfg.StrOpt(\u0027vip_subnet_cidr\u0027,"},{"line_number":103,"context_line":"               default\u003d\u002710.1.1.0/24\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"df7087c5_aef46188","line":100,"in_reply_to":"1f9dbf25_fab7b285","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"acb3e062677d63ffb1ff45375e8823ba1341f333","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    cfg.StrOpt(\u0027admin_role\u0027,"},{"line_number":78,"context_line":"               default\u003d\u0027load-balancer_admin\u0027,"},{"line_number":79,"context_line":"               help\u003d\u0027The load balancing admin RBAC role.\u0027),"},{"line_number":80,"context_line":"    cfg.IntOpt(\u0027scp_connection_timeout\u0027,"},{"line_number":81,"context_line":"               default\u003d5,"},{"line_number":82,"context_line":"               help\u003d\u0027Timeout in seconds to wait for a \u0027"},{"line_number":83,"context_line":"                    \u0027scp connection to complete.\u0027),"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_b66521b7","line":80,"updated":"2018-04-03 19:31:55.000000000","message":"There is a config option in the \"validation\" section for \"ssh_timeout\", is this distinct enough to warrant its own config option or could that one be re-used? I think it is more like a \"total time\" thing, so you\u0027d have to either just pick a timeout and then extrapolate the total number of attempts from that, or change the logic to function that way, I guess.","commit_id":"62f43d4b69c973afa4c5e20da785b842446f0d7f"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"acb3e062677d63ffb1ff45375e8823ba1341f333","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    cfg.StrOpt(\u0027test_subnet_override\u0027,"},{"line_number":98,"context_line":"               help\u003d\u0027Overrides subnet creation and uses this subnet ID for \u0027"},{"line_number":99,"context_line":"                    \u0027all IPv4 tests (VIP, members, etc.). Required if \u0027"},{"line_number":100,"context_line":"                    \u0027test_network_override is set.\u0027),"},{"line_number":101,"context_line":"    cfg.StrOpt(\u0027test_ipv6_subnet_override\u0027,"},{"line_number":102,"context_line":"               help\u003d\u0027Overrides subnet creation and uses this subnet ID for \u0027"},{"line_number":103,"context_line":"                    \u0027all IPv6 tests (VIP, members, etc.). Optional and only \u0027"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_36da7177","line":100,"updated":"2018-04-03 19:31:55.000000000","message":"So in my environment, I can\u0027t provide a subnet, only a network. Having this \"required\" is not workable in my case at least.","commit_id":"62f43d4b69c973afa4c5e20da785b842446f0d7f"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"acb3e062677d63ffb1ff45375e8823ba1341f333","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    cfg.StrOpt(\u0027member_2_ipv6_subnet_cidr\u0027,"},{"line_number":121,"context_line":"               default\u003d\u0027fd77:1457:4cf0:26a8::/64\u0027,"},{"line_number":122,"context_line":"               help\u003d\u0027CIDR format subnet to use for the member 1 ipv6 subnet.\u0027),"},{"line_number":123,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_d6bd3502","line":123,"updated":"2018-04-03 19:31:55.000000000","message":"A number of options seem to have disappeared -- the two that stand out the most are:\n\navailability_zone\nrandom_server_name_length\n\nBoth of these are technically options for setting up the member compute nodes, and are required for tests to work in my environment.","commit_id":"62f43d4b69c973afa4c5e20da785b842446f0d7f"}],"octavia_tempest_plugin/tests/api/v2/test_load_balancer.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        * Create a fully populated load balancer."},{"line_number":45,"context_line":"        * Show load balancer details."},{"line_number":46,"context_line":"        * Validate the show reflects the requested values."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1-create\")"},{"line_number":49,"context_line":"        lb_description \u003d data_utils.arbitrary_string(size\u003d255)"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fd27ac63","line":46,"updated":"2018-03-02 03:05:22.000000000","message":"These comments don\u0027t actually reflect exactly what you\u0027re testing here -- you\u0027re also testing some permissions/visibility thing, and also the delete operation (see below).","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        * Create a fully populated load balancer."},{"line_number":45,"context_line":"        * Show load balancer details."},{"line_number":46,"context_line":"        * Validate the show reflects the requested values."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1-create\")"},{"line_number":49,"context_line":"        lb_description \u003d data_utils.arbitrary_string(size\u003d255)"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_ff26f016","line":46,"in_reply_to":"1f9dbf25_fd27ac63","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        * Show load balancer details."},{"line_number":46,"context_line":"        * Validate the show reflects the requested values."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1-create\")"},{"line_number":49,"context_line":"        lb_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":50,"context_line":"        ip_index \u003d data_utils.rand_int_id(start\u003d10, end\u003d100)"},{"line_number":51,"context_line":"        if CONF.load_balancer.vip_ip_version \u003d\u003d 4:"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1a729ee6","line":48,"updated":"2018-03-02 03:05:22.000000000","message":"What is with this (what I assume is a... prefix?) name?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        * Show load balancer details."},{"line_number":46,"context_line":"        * Validate the show reflects the requested values."},{"line_number":47,"context_line":"        \"\"\""},{"line_number":48,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1-create\")"},{"line_number":49,"context_line":"        lb_description \u003d data_utils.arbitrary_string(size\u003d255)"},{"line_number":50,"context_line":"        ip_index \u003d data_utils.rand_int_id(start\u003d10, end\u003d100)"},{"line_number":51,"context_line":"        if CONF.load_balancer.vip_ip_version \u003d\u003d 4:"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_395bdf54","line":48,"in_reply_to":"1f9dbf25_1a729ee6","updated":"2018-03-24 00:03:19.000000000","message":"https://docs.openstack.org/tempest/latest/HACKING.html#parallel-test-execution\nIt is a prefix and required for the \"parallel test execution\"","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        if CONF.load_balancer.vip_ip_version \u003d\u003d 4:"},{"line_number":52,"context_line":"            network \u003d ipaddress.IPv4Network("},{"line_number":53,"context_line":"                six.u(CONF.load_balancer.vip_subnet_cidr))"},{"line_number":54,"context_line":"            lb_vip_address \u003d str(network[ip_index])"},{"line_number":55,"context_line":"        else:"},{"line_number":56,"context_line":"            network \u003d ipaddress.IPv6Network("},{"line_number":57,"context_line":"                six.u(CONF.load_balancer.vip_subnet_cidr))"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_da73d6e6","line":54,"updated":"2018-03-02 03:05:22.000000000","message":"This line doesn\u0027t need to be in this `if`, and is duplicated in the `else` below.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        if CONF.load_balancer.vip_ip_version \u003d\u003d 4:"},{"line_number":52,"context_line":"            network \u003d ipaddress.IPv4Network("},{"line_number":53,"context_line":"                six.u(CONF.load_balancer.vip_subnet_cidr))"},{"line_number":54,"context_line":"            lb_vip_address \u003d str(network[ip_index])"},{"line_number":55,"context_line":"        else:"},{"line_number":56,"context_line":"            network \u003d ipaddress.IPv6Network("},{"line_number":57,"context_line":"                six.u(CONF.load_balancer.vip_subnet_cidr))"}],"source_content_type":"text/x-python","patch_set":20,"id":"df7087c5_4e4825cb","line":54,"in_reply_to":"1f9dbf25_da73d6e6","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                # TODO(johnsom) Add QoS"},{"line_number":70,"context_line":"                # vip_qos_policy_id\u003dlb_qos_policy_id)"},{"line_number":71,"context_line":"                # specifying both subnet and network here to make sure"},{"line_number":72,"context_line":"                # no-op works, otherwise no-op generates a random net uuid"},{"line_number":73,"context_line":"                vip_network_id\u003dself.lb_member_vip_net[const.ID],"},{"line_number":74,"context_line":"                vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":75,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fa457271","line":72,"updated":"2018-03-02 03:05:22.000000000","message":"I wonder if there is a better way around this issue...","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                # TODO(johnsom) Add QoS"},{"line_number":70,"context_line":"                # vip_qos_policy_id\u003dlb_qos_policy_id)"},{"line_number":71,"context_line":"                # specifying both subnet and network here to make sure"},{"line_number":72,"context_line":"                # no-op works, otherwise no-op generates a random net uuid"},{"line_number":73,"context_line":"                vip_network_id\u003dself.lb_member_vip_net[const.ID],"},{"line_number":74,"context_line":"                vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":75,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_0224abc5","line":72,"in_reply_to":"1f9dbf25_fa457271","updated":"2018-03-24 00:03:19.000000000","message":"The only way I can think is to have the no-op always return specific UUIDs and put those in as a special case.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.assertEqual(self.os_roles_lb_member.credentials.project_id,"},{"line_number":109,"context_line":"                         lb[const.PROJECT_ID])"},{"line_number":110,"context_line":"        self.assertEqual(CONF.load_balancer.provider, lb[const.PROVIDER])"},{"line_number":111,"context_line":"        parser.parse(lb[const.UPDATED_AT])"},{"line_number":112,"context_line":"        self.assertEqual(lb_vip_address, lb[const.VIP_ADDRESS])"},{"line_number":113,"context_line":"        self.assertEqual(self.lb_member_vip_net[const.ID],"},{"line_number":114,"context_line":"                         lb[const.VIP_NETWORK_ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_da5c364d","line":111,"updated":"2018-03-02 03:05:22.000000000","message":"nit: could this be grouped with CREATED_AT just for ease of reading","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        self.assertEqual(self.os_roles_lb_member.credentials.project_id,"},{"line_number":109,"context_line":"                         lb[const.PROJECT_ID])"},{"line_number":110,"context_line":"        self.assertEqual(CONF.load_balancer.provider, lb[const.PROVIDER])"},{"line_number":111,"context_line":"        parser.parse(lb[const.UPDATED_AT])"},{"line_number":112,"context_line":"        self.assertEqual(lb_vip_address, lb[const.VIP_ADDRESS])"},{"line_number":113,"context_line":"        self.assertEqual(self.lb_member_vip_net[const.ID],"},{"line_number":114,"context_line":"                         lb[const.VIP_NETWORK_ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"df7087c5_ee1019ab","line":111,"in_reply_to":"1f9dbf25_da5c364d","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertEqual(self.lb_member_vip_subnet[const.ID],"},{"line_number":117,"context_line":"                         lb[const.VIP_SUBNET_ID])"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb[const.ID])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":122,"context_line":"                                lb[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_bd736480","line":119,"updated":"2018-03-02 03:05:22.000000000","message":"So with this we actually do the delete testing inside the create test -- I think if we didn\u0027t include this in the test, but let the cleanup handle it, this test would still pass if the delete failed? Versus now, if the delete fails, it\u0027ll fail the test? Or will the waiter not raise if it times out / fails?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        self.assertEqual(self.lb_member_vip_subnet[const.ID],"},{"line_number":117,"context_line":"                         lb[const.VIP_SUBNET_ID])"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb[const.ID])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":122,"context_line":"                                lb[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_3fd0e8c9","line":119,"in_reply_to":"1f9dbf25_bd736480","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        * Creates a load balancer."},{"line_number":132,"context_line":"        * Deletes the load balancer."},{"line_number":133,"context_line":"        * Validates the load balancer is in the DELETED state."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":136,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1d2db842","line":133,"updated":"2018-03-02 03:05:22.000000000","message":"Similarly, you don\u0027t mention the permissions checks.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":130,"context_line":""},{"line_number":131,"context_line":"        * Creates a load balancer."},{"line_number":132,"context_line":"        * Deletes the load balancer."},{"line_number":133,"context_line":"        * Validates the load balancer is in the DELETED state."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":136,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_5feefc88","line":133,"in_reply_to":"1f9dbf25_1d2db842","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        * Deletes the load balancer."},{"line_number":133,"context_line":"        * Validates the load balancer is in the DELETED state."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":136,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":137,"context_line":"        self.addClassResourceCleanup("},{"line_number":138,"context_line":"            test_utils.call_and_ignore_notfound_exc,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_9d51c8db","line":135,"updated":"2018-03-02 03:05:22.000000000","message":"We don\u0027t name this one?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":132,"context_line":"        * Deletes the load balancer."},{"line_number":133,"context_line":"        * Validates the load balancer is in the DELETED state."},{"line_number":134,"context_line":"        \"\"\""},{"line_number":135,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":136,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":137,"context_line":"        self.addClassResourceCleanup("},{"line_number":138,"context_line":"            test_utils.call_and_ignore_notfound_exc,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_e255f71e","line":135,"in_reply_to":"1f9dbf25_9d51c8db","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                                     CONF.load_balancer.lb_build_interval,"},{"line_number":146,"context_line":"                                     CONF.load_balancer.lb_build_timeout)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":149,"context_line":"        self.assertRaises("},{"line_number":150,"context_line":"            exceptions.Forbidden,"},{"line_number":151,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_5d6580b4","line":148,"updated":"2018-03-02 03:05:22.000000000","message":"I think this is supposed to be \"cannot delete this load balancer\".","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":145,"context_line":"                                     CONF.load_balancer.lb_build_interval,"},{"line_number":146,"context_line":"                                     CONF.load_balancer.lb_build_timeout)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":149,"context_line":"        self.assertRaises("},{"line_number":150,"context_line":"            exceptions.Forbidden,"},{"line_number":151,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_1f008434","line":148,"in_reply_to":"1f9dbf25_5d6580b4","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"},{"line_number":152,"context_line":"            lb[const.ID])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":155,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":156,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":157,"context_line":"                          member2_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fd59ecfd","line":154,"updated":"2018-03-02 03:05:22.000000000","message":"Same.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"},{"line_number":152,"context_line":"            lb[const.ID])"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":155,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":156,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":157,"context_line":"                          member2_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_bffcf83e","line":154,"in_reply_to":"1f9dbf25_fd59ecfd","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                          member2_client.delete_loadbalancer,"},{"line_number":158,"context_line":"                          lb[const.ID])"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb[const.ID])"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":163,"context_line":"                                lb[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_7d6ddc96","line":160,"updated":"2018-03-02 03:05:22.000000000","message":"THIS test it makes sense to have the delete ... Unfortunately it also does have to do a create (obviously), but otherwise the create test is very remarkably similar to the delete test, in that both essentially just perform a create followed by a delete.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                                CONF.load_balancer.lb_build_timeout)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    @decorators.idempotent_id(\u0027643ef031-c800-45f2-b229-3c8f8b37c829\u0027)"},{"line_number":169,"context_line":"    def test_load_balancer_delete_cascade(self):"},{"line_number":170,"context_line":"        \"\"\"Tests load balancer create and cascade delete APIs."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        * Creates a load balancer."}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_3d0514c3","line":169,"updated":"2018-03-02 03:05:22.000000000","message":"Right now this test does nothing to actually test the cascade parameter here, other than that it doesn\u0027t explode when we pass it. Until we can add other objects to the LB, this test is pointless. Maybe skip it for the time being so we don\u0027t think it\u0027s testing something it isn\u0027t?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                                CONF.load_balancer.lb_build_timeout)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    @decorators.idempotent_id(\u0027643ef031-c800-45f2-b229-3c8f8b37c829\u0027)"},{"line_number":169,"context_line":"    def test_load_balancer_delete_cascade(self):"},{"line_number":170,"context_line":"        \"\"\"Tests load balancer create and cascade delete APIs."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        * Creates a load balancer."}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1c13715e","line":169,"in_reply_to":"1f9dbf25_3d0514c3","updated":"2018-03-24 00:03:19.000000000","message":"Correct, we need the other service clients created before this can be a useful test.  Right now it only tests the API accepts this parameter and successfully deletes the LB. I thought I left a TODO here, but evidently not.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                                     CONF.load_balancer.lb_build_interval,"},{"line_number":187,"context_line":"                                     CONF.load_balancer.lb_build_timeout)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":190,"context_line":"        self.assertRaises("},{"line_number":191,"context_line":"            exceptions.Forbidden,"},{"line_number":192,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_ddd99083","line":189,"updated":"2018-03-02 03:05:22.000000000","message":"I think this is supposed to be \"cannot delete this load balancer\".","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                                     CONF.load_balancer.lb_build_interval,"},{"line_number":187,"context_line":"                                     CONF.load_balancer.lb_build_timeout)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":190,"context_line":"        self.assertRaises("},{"line_number":191,"context_line":"            exceptions.Forbidden,"},{"line_number":192,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_5fa35c50","line":189,"in_reply_to":"1f9dbf25_ddd99083","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"},{"line_number":193,"context_line":"            lb[const.ID], cascade\u003dTrue)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":196,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":197,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":198,"context_line":"                          member2_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_3dd2f45d","line":195,"updated":"2018-03-02 03:05:22.000000000","message":"Same, but also, why do we need to test this twice with two users that should have the same permissions? Am I missing something?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":192,"context_line":"            self.os_primary.loadbalancer_client.delete_loadbalancer,"},{"line_number":193,"context_line":"            lb[const.ID], cascade\u003dTrue)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":196,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":197,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":198,"context_line":"                          member2_client.delete_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_1f85e4ad","line":195,"in_reply_to":"1f9dbf25_3dd2f45d","updated":"2018-03-24 00:03:19.000000000","message":"Difference is this user has the load balancer role, where the first does not. Adding a better comment.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                                CONF.load_balancer.lb_build_interval,"},{"line_number":207,"context_line":"                                CONF.load_balancer.lb_build_timeout)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _check_field(self, reference_lb1, reference_lb2, list_result, field):"},{"line_number":210,"context_line":"        self.assertEqual(1, len(list_result[0]))"},{"line_number":211,"context_line":"        self.assertEqual(reference_lb1[field], list_result[0][field])"},{"line_number":212,"context_line":"        self.assertEqual(reference_lb2[field], list_result[1][field])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fd0ecce3","line":209,"updated":"2018-03-02 03:05:22.000000000","message":"This is an oddly specifically functioning method that could use a note about what exactly it\u0027s doing -- I think it only works if you have the return dict from a LIST operation and it happens to have exactly two LBs in it? :/","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":206,"context_line":"                                CONF.load_balancer.lb_build_interval,"},{"line_number":207,"context_line":"                                CONF.load_balancer.lb_build_timeout)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _check_field(self, reference_lb1, reference_lb2, list_result, field):"},{"line_number":210,"context_line":"        self.assertEqual(1, len(list_result[0]))"},{"line_number":211,"context_line":"        self.assertEqual(reference_lb1[field], list_result[0][field])"},{"line_number":212,"context_line":"        self.assertEqual(reference_lb2[field], list_result[1][field])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_c2c8f375","line":209,"in_reply_to":"1f9dbf25_fd0ecce3","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        * List the load balancers using descending sort order."},{"line_number":221,"context_line":"        * List the load balancers using ascending sort order."},{"line_number":222,"context_line":"        * List the load balancers returning just one field."},{"line_number":223,"context_line":"        * List the load balancers filtering to one of the two."},{"line_number":224,"context_line":"        \"\"\""},{"line_number":225,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1\")"},{"line_number":226,"context_line":"        lb_description \u003d \u0027A\u0027"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_3dbc34db","line":223,"updated":"2018-03-02 03:05:22.000000000","message":"Also not accurate -- for starters, you say \"filtering to one of the two\" when I see you are creating three LBs?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        * List the load balancers returning just one field."},{"line_number":223,"context_line":"        * List the load balancers filtering to one of the two."},{"line_number":224,"context_line":"        \"\"\""},{"line_number":225,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1\")"},{"line_number":226,"context_line":"        lb_description \u003d \u0027A\u0027"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_3dd3d43a","line":225,"updated":"2018-03-02 03:05:22.000000000","message":"This naming isn\u0027t consistent. This one should be like ... \"-list\" or something to match what you had above?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        * List the load balancers returning just one field."},{"line_number":223,"context_line":"        * List the load balancers filtering to one of the two."},{"line_number":224,"context_line":"        \"\"\""},{"line_number":225,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1\")"},{"line_number":226,"context_line":"        lb_description \u003d \u0027A\u0027"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_c26233d9","line":225,"in_reply_to":"1f9dbf25_3dd3d43a","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":251,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb2\")"},{"line_number":254,"context_line":"        lb_description \u003d \u0027B\u0027"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1de29804","line":253,"updated":"2018-03-02 03:05:22.000000000","message":"Same","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":250,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":251,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb2\")"},{"line_number":254,"context_line":"        lb_description \u003d \u0027B\u0027"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_829afbc2","line":253,"in_reply_to":"1f9dbf25_1de29804","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":271,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb3\")"},{"line_number":274,"context_line":"        lb_description \u003d \u0027C\u0027"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_dde3d004","line":273,"updated":"2018-03-02 03:05:22.000000000","message":"Same","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":270,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":271,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb3\")"},{"line_number":274,"context_line":"        lb_description \u003d \u0027C\u0027"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_a29fffb2","line":273,"in_reply_to":"1f9dbf25_dde3d004","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":291,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":294,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":295,"context_line":"        primary \u003d member2_client.list_loadbalancers()"},{"line_number":296,"context_line":"        self.assertEqual(0, len(primary))"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1dbb78e2","line":293,"updated":"2018-03-02 03:05:22.000000000","message":"More of this? OK... I guess technically listing could be different logic.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":290,"context_line":"                                      CONF.load_balancer.lb_build_interval,"},{"line_number":291,"context_line":"                                      CONF.load_balancer.lb_build_timeout)"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":294,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":295,"context_line":"        primary \u003d member2_client.list_loadbalancers()"},{"line_number":296,"context_line":"        self.assertEqual(0, len(primary))"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_bc791d94","line":293,"in_reply_to":"1f9dbf25_1dbb78e2","updated":"2018-03-24 00:03:19.000000000","message":"It is, if someone removed or bypassed the RBAC check this would fail.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        primary \u003d member2_client.list_loadbalancers()"},{"line_number":296,"context_line":"        self.assertEqual(0, len(primary))"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        # Test that a user without the lb member role cannot list load"},{"line_number":299,"context_line":"        # balancers"},{"line_number":300,"context_line":"        self.assertRaises("},{"line_number":301,"context_line":"            exceptions.Forbidden,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_ddcc308b","line":298,"updated":"2018-03-02 03:05:22.000000000","message":"Did you mean \"cannot show a load balancer\"?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        primary \u003d member2_client.list_loadbalancers()"},{"line_number":296,"context_line":"        self.assertEqual(0, len(primary))"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"        # Test that a user without the lb member role cannot list load"},{"line_number":299,"context_line":"        # balancers"},{"line_number":300,"context_line":"        self.assertRaises("},{"line_number":301,"context_line":"            exceptions.Forbidden,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_c2e5533a","line":298,"in_reply_to":"1f9dbf25_ddcc308b","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":302,"context_line":"            self.os_primary.loadbalancer_client.show_loadbalancer,"},{"line_number":303,"context_line":"            lb[const.ID])"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # Check the default sort order, created_at"},{"line_number":306,"context_line":"        lbs \u003d self.mem_lb_client.list_loadbalancers()"},{"line_number":307,"context_line":"        self.assertEqual(lb1[const.DESCRIPTION], lbs[0][const.DESCRIPTION])"},{"line_number":308,"context_line":"        self.assertEqual(lb2[const.DESCRIPTION], lbs[1][const.DESCRIPTION])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_3da194aa","line":305,"updated":"2018-03-02 03:05:22.000000000","message":"I\u0027m not sure what I think of this test. It could also very well be sorting by name, or description, as all three would produce the same ordering result, given how you created them, I believe.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":302,"context_line":"            self.os_primary.loadbalancer_client.show_loadbalancer,"},{"line_number":303,"context_line":"            lb[const.ID])"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"        # Check the default sort order, created_at"},{"line_number":306,"context_line":"        lbs \u003d self.mem_lb_client.list_loadbalancers()"},{"line_number":307,"context_line":"        self.assertEqual(lb1[const.DESCRIPTION], lbs[0][const.DESCRIPTION])"},{"line_number":308,"context_line":"        self.assertEqual(lb2[const.DESCRIPTION], lbs[1][const.DESCRIPTION])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_55d01b51","line":305,"in_reply_to":"1f9dbf25_3da194aa","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        self.assertEqual(lb2[const.DESCRIPTION], lbs[1][const.DESCRIPTION])"},{"line_number":316,"context_line":"        self.assertEqual(lb3[const.DESCRIPTION], lbs[0][const.DESCRIPTION])"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        # Test sort ascending by description"},{"line_number":319,"context_line":"        lbs \u003d self.mem_lb_client.list_loadbalancers("},{"line_number":320,"context_line":"            query_params\u003d\u0027{sort}\u003d{descr}:{asc}\u0027.format(sort\u003dconst.SORT,"},{"line_number":321,"context_line":"                                                       descr\u003dconst.DESCRIPTION,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1db058f4","line":318,"updated":"2018-03-02 03:05:22.000000000","message":"Similar to above, notice that this is the same as the create-order, so we can\u0027t prove this works. You need to scramble things a bit so these values don\u0027t line up in that way.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":315,"context_line":"        self.assertEqual(lb2[const.DESCRIPTION], lbs[1][const.DESCRIPTION])"},{"line_number":316,"context_line":"        self.assertEqual(lb3[const.DESCRIPTION], lbs[0][const.DESCRIPTION])"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":"        # Test sort ascending by description"},{"line_number":319,"context_line":"        lbs \u003d self.mem_lb_client.list_loadbalancers("},{"line_number":320,"context_line":"            query_params\u003d\u0027{sort}\u003d{descr}:{asc}\u0027.format(sort\u003dconst.SORT,"},{"line_number":321,"context_line":"                                                       descr\u003dconst.DESCRIPTION,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_35cb27a6","line":318,"in_reply_to":"1f9dbf25_1db058f4","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        self.assertEqual(lb2[const.DESCRIPTION], lbs[0][const.DESCRIPTION])"},{"line_number":368,"context_line":"        self.assertEqual(lb1[const.DESCRIPTION], lbs[1][const.DESCRIPTION])"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb1[const.ID])"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":373,"context_line":"                                lb1[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_3d8af41a","line":370,"updated":"2018-03-02 03:05:22.000000000","message":"Again, this is a delete test now.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":367,"context_line":"        self.assertEqual(lb2[const.DESCRIPTION], lbs[0][const.DESCRIPTION])"},{"line_number":368,"context_line":"        self.assertEqual(lb1[const.DESCRIPTION], lbs[1][const.DESCRIPTION])"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb1[const.ID])"},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":373,"context_line":"                                lb1[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_62ba47df","line":370,"in_reply_to":"1f9dbf25_3d8af41a","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        self.assertEqual(self.os_roles_lb_member.credentials.project_id,"},{"line_number":458,"context_line":"                         lb[const.PROJECT_ID])"},{"line_number":459,"context_line":"        self.assertEqual(CONF.load_balancer.provider, lb[const.PROVIDER])"},{"line_number":460,"context_line":"        parser.parse(lb[const.UPDATED_AT])"},{"line_number":461,"context_line":"        self.assertEqual(lb_vip_address, lb[const.VIP_ADDRESS])"},{"line_number":462,"context_line":"        self.assertEqual(self.lb_member_vip_net[const.ID],"},{"line_number":463,"context_line":"                         lb[const.VIP_NETWORK_ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_5d8fc029","line":460,"updated":"2018-03-02 03:05:22.000000000","message":"nit: Same as above, just scooch this up a few lines next to CREATED_AT if you would. ;)","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":457,"context_line":"        self.assertEqual(self.os_roles_lb_member.credentials.project_id,"},{"line_number":458,"context_line":"                         lb[const.PROJECT_ID])"},{"line_number":459,"context_line":"        self.assertEqual(CONF.load_balancer.provider, lb[const.PROVIDER])"},{"line_number":460,"context_line":"        parser.parse(lb[const.UPDATED_AT])"},{"line_number":461,"context_line":"        self.assertEqual(lb_vip_address, lb[const.VIP_ADDRESS])"},{"line_number":462,"context_line":"        self.assertEqual(self.lb_member_vip_net[const.ID],"},{"line_number":463,"context_line":"                         lb[const.VIP_NETWORK_ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_02c58b8e","line":460,"in_reply_to":"1f9dbf25_5d8fc029","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                          member2_client.show_loadbalancer,"},{"line_number":482,"context_line":"                          lb[const.ID])"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"        # Test that a non-member user cannot show load balancers"},{"line_number":485,"context_line":"        self.assertRaises("},{"line_number":486,"context_line":"            exceptions.Forbidden,"},{"line_number":487,"context_line":"            self.os_primary.loadbalancer_client.show_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fd980c6b","line":484,"updated":"2018-03-02 03:05:22.000000000","message":"What does this mean? What\u0027s a \"non-member\"?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                          member2_client.show_loadbalancer,"},{"line_number":482,"context_line":"                          lb[const.ID])"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"        # Test that a non-member user cannot show load balancers"},{"line_number":485,"context_line":"        self.assertRaises("},{"line_number":486,"context_line":"            exceptions.Forbidden,"},{"line_number":487,"context_line":"            self.os_primary.loadbalancer_client.show_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_a23b7f9a","line":484,"in_reply_to":"1f9dbf25_fd980c6b","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            self.os_primary.loadbalancer_client.show_loadbalancer,"},{"line_number":488,"context_line":"            lb[const.ID])"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb[const.ID])"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":493,"context_line":"                                lb[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_dd9f504e","line":490,"updated":"2018-03-02 03:05:22.000000000","message":"And there\u0027s the delete. Can we maybe at least have these ones try/except on the delete? Or, are you worried about the space on the nova gate hosts and delete-failures causing everything else to fail? Which ... will happen regardless of whether we wrongly fail these tests?\nOr, are you thinking that something we\u0027re doing in the test could CAUSE the delete to fail in only a specific test?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            self.os_primary.loadbalancer_client.show_loadbalancer,"},{"line_number":488,"context_line":"            lb[const.ID])"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb[const.ID])"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":493,"context_line":"                                lb[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_420e23e6","line":490,"in_reply_to":"1f9dbf25_dd9f504e","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        self.assertEqual(self.os_roles_lb_member.credentials.project_id,"},{"line_number":565,"context_line":"                         lb[const.PROJECT_ID])"},{"line_number":566,"context_line":"        self.assertEqual(CONF.load_balancer.provider, lb[const.PROVIDER])"},{"line_number":567,"context_line":"        parser.parse(lb[const.UPDATED_AT])"},{"line_number":568,"context_line":"        self.assertEqual(lb_vip_address, lb[const.VIP_ADDRESS])"},{"line_number":569,"context_line":"        self.assertEqual(self.lb_member_vip_net[const.ID],"},{"line_number":570,"context_line":"                         lb[const.VIP_NETWORK_ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_7dacfc8b","line":567,"updated":"2018-03-02 03:05:22.000000000","message":"nit: Scooch!","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":564,"context_line":"        self.assertEqual(self.os_roles_lb_member.credentials.project_id,"},{"line_number":565,"context_line":"                         lb[const.PROJECT_ID])"},{"line_number":566,"context_line":"        self.assertEqual(CONF.load_balancer.provider, lb[const.PROVIDER])"},{"line_number":567,"context_line":"        parser.parse(lb[const.UPDATED_AT])"},{"line_number":568,"context_line":"        self.assertEqual(lb_vip_address, lb[const.VIP_ADDRESS])"},{"line_number":569,"context_line":"        self.assertEqual(self.lb_member_vip_net[const.ID],"},{"line_number":570,"context_line":"                         lb[const.VIP_NETWORK_ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_2291af53","line":567,"in_reply_to":"1f9dbf25_7dacfc8b","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        self.assertEqual(self.lb_member_vip_subnet[const.ID],"},{"line_number":573,"context_line":"                         lb[const.VIP_SUBNET_ID])"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        new_name \u003d data_utils.rand_name(\"lb_member_lb1-update\")"},{"line_number":576,"context_line":"        new_description \u003d data_utils.arbitrary_string(size\u003d255,"},{"line_number":577,"context_line":"                                                      base_text\u003d\u0027new\u0027)"},{"line_number":578,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1db7f8d7","line":575,"updated":"2018-03-02 03:05:22.000000000","message":"So yeah, is this a prefix/postfix?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        self.assertEqual(self.lb_member_vip_subnet[const.ID],"},{"line_number":573,"context_line":"                         lb[const.VIP_SUBNET_ID])"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        new_name \u003d data_utils.rand_name(\"lb_member_lb1-update\")"},{"line_number":576,"context_line":"        new_description \u003d data_utils.arbitrary_string(size\u003d255,"},{"line_number":577,"context_line":"                                                      base_text\u003d\u0027new\u0027)"},{"line_number":578,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_82899b27","line":575,"in_reply_to":"1f9dbf25_1db7f8d7","updated":"2018-03-24 00:03:19.000000000","message":"I don\u0027t understand this comment.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"daf91d71ecdf72d9e4a24765b099693af8d316d8","unresolved":false,"context_lines":[{"line_number":572,"context_line":"        self.assertEqual(self.lb_member_vip_subnet[const.ID],"},{"line_number":573,"context_line":"                         lb[const.VIP_SUBNET_ID])"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        new_name \u003d data_utils.rand_name(\"lb_member_lb1-update\")"},{"line_number":576,"context_line":"        new_description \u003d data_utils.arbitrary_string(size\u003d255,"},{"line_number":577,"context_line":"                                                      base_text\u003d\u0027new\u0027)"},{"line_number":578,"context_line":""}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_36acb1eb","line":575,"in_reply_to":"bf659307_82899b27","updated":"2018-04-03 18:58:35.000000000","message":"Usually rand_name does prefixes or such with the string passed through, so it\u0027d be like \"lb_member_lb1-update-30bcr203n8n2038nrm2\" or somesuch, right? Was double-checking.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":587,"context_line":"        self.assertEqual(const.ACTIVE, lb_check[const.PROVISIONING_STATUS])"},{"line_number":588,"context_line":"        self.assertFalse(lb_check[const.ADMIN_STATE_UP])"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":591,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":592,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":593,"context_line":"                          member2_client.update_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_ddc8b056","line":590,"updated":"2018-03-02 03:05:22.000000000","message":"Wrong comment again I think.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":587,"context_line":"        self.assertEqual(const.ACTIVE, lb_check[const.PROVISIONING_STATUS])"},{"line_number":588,"context_line":"        self.assertFalse(lb_check[const.ADMIN_STATE_UP])"},{"line_number":589,"context_line":""},{"line_number":590,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":591,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":592,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":593,"context_line":"                          member2_client.update_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_2273efe9","line":590,"in_reply_to":"1f9dbf25_ddc8b056","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                          member2_client.update_loadbalancer,"},{"line_number":594,"context_line":"                          lb[const.ID], admin_state_up\u003dTrue)"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        # Assert we didn\u0027t go into PENDING_*"},{"line_number":597,"context_line":"        lb_check \u003d self.mem_lb_client.show_loadbalancer(lb[const.ID])"},{"line_number":598,"context_line":"        self.assertEqual(const.ACTIVE, lb_check[const.PROVISIONING_STATUS])"},{"line_number":599,"context_line":"        self.assertFalse(lb_check[const.ADMIN_STATE_UP])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_5d0b408d","line":596,"updated":"2018-03-02 03:05:22.000000000","message":"I see a few of this type of test and FYI this will be subject to race conditions (especially with noop) and so doesn\u0027t REALLY prove anything in a *single* run, though across multiple it might become statistically relevant.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                          member2_client.update_loadbalancer,"},{"line_number":594,"context_line":"                          lb[const.ID], admin_state_up\u003dTrue)"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        # Assert we didn\u0027t go into PENDING_*"},{"line_number":597,"context_line":"        lb_check \u003d self.mem_lb_client.show_loadbalancer(lb[const.ID])"},{"line_number":598,"context_line":"        self.assertEqual(const.ACTIVE, lb_check[const.PROVISIONING_STATUS])"},{"line_number":599,"context_line":"        self.assertFalse(lb_check[const.ADMIN_STATE_UP])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_02cb4b53","line":596,"in_reply_to":"1f9dbf25_5d0b408d","updated":"2018-03-24 00:03:19.000000000","message":"Each of these tests should get unique load balancers, so there should be no race condition. We checked that it went to the known state above when we created it. This is just making sure that a \"update\" call with an unauthorized user doesn\u0027t lock the LB by changing the state into PENDING_*\nWe had a bug like this in neutron-lbaas","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"daf91d71ecdf72d9e4a24765b099693af8d316d8","unresolved":false,"context_lines":[{"line_number":593,"context_line":"                          member2_client.update_loadbalancer,"},{"line_number":594,"context_line":"                          lb[const.ID], admin_state_up\u003dTrue)"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"        # Assert we didn\u0027t go into PENDING_*"},{"line_number":597,"context_line":"        lb_check \u003d self.mem_lb_client.show_loadbalancer(lb[const.ID])"},{"line_number":598,"context_line":"        self.assertEqual(const.ACTIVE, lb_check[const.PROVISIONING_STATUS])"},{"line_number":599,"context_line":"        self.assertFalse(lb_check[const.ADMIN_STATE_UP])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_b67be189","line":596,"in_reply_to":"bf659307_02cb4b53","updated":"2018-04-03 18:58:35.000000000","message":"Sure but it could just as well go into PENDING and then ACTIVE already before this check (mostly an issue with noop since it\u0027s so fast), so I don\u0027t think this really does what you want. We had issues all over the place in the testing for CLB where we tested for transient states and it either masked issues or caused intermittent failures. In this case, it\u0027d be the former.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":617,"context_line":"        self.assertEqual(new_name, lb[const.NAME])"},{"line_number":618,"context_line":"        # TODO(johnsom) Add QoS"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb[const.ID])"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":623,"context_line":"                                lb[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_9dc22833","line":620,"updated":"2018-03-02 03:05:22.000000000","message":"Probably I will stop commenting on these deletes now, you get the point.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":617,"context_line":"        self.assertEqual(new_name, lb[const.NAME])"},{"line_number":618,"context_line":"        # TODO(johnsom) Add QoS"},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"        self.mem_lb_client.delete_loadbalancer(lb[const.ID])"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        waiters.wait_for_status(self.mem_lb_client.show_loadbalancer,"},{"line_number":623,"context_line":"                                lb[const.ID], const.PROVISIONING_STATUS,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_a2e13fd3","line":620,"in_reply_to":"1f9dbf25_9dc22833","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        * Show load balancer statistics."},{"line_number":634,"context_line":"        * Validate the show reflects the expected values."},{"line_number":635,"context_line":"        \"\"\""},{"line_number":636,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":637,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":638,"context_line":"        self.addClassResourceCleanup("},{"line_number":639,"context_line":"            test_utils.call_and_ignore_notfound_exc,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1decd8c5","line":636,"updated":"2018-03-02 03:05:22.000000000","message":"No name?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":633,"context_line":"        * Show load balancer statistics."},{"line_number":634,"context_line":"        * Validate the show reflects the expected values."},{"line_number":635,"context_line":"        \"\"\""},{"line_number":636,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":637,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":638,"context_line":"        self.addClassResourceCleanup("},{"line_number":639,"context_line":"            test_utils.call_and_ignore_notfound_exc,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_c2f2339b","line":636,"in_reply_to":"1f9dbf25_1decd8c5","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":652,"context_line":"            self.os_primary.loadbalancer_client.get_loadbalancer_stats,"},{"line_number":653,"context_line":"            lb[const.ID])"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":656,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":657,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":658,"context_line":"                          member2_client.get_loadbalancer_stats,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_3ddd1414","line":655,"updated":"2018-03-02 03:05:22.000000000","message":"Wrong comment again","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":652,"context_line":"            self.os_primary.loadbalancer_client.get_loadbalancer_stats,"},{"line_number":653,"context_line":"            lb[const.ID])"},{"line_number":654,"context_line":""},{"line_number":655,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":656,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":657,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":658,"context_line":"                          member2_client.get_loadbalancer_stats,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_e21df7bd","line":655,"in_reply_to":"1f9dbf25_3ddd1414","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        * Show load balancer status tree."},{"line_number":684,"context_line":"        * Validate the show reflects the expected values."},{"line_number":685,"context_line":"        \"\"\""},{"line_number":686,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1-update\")"},{"line_number":687,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":688,"context_line":"            name\u003dlb_name,"},{"line_number":689,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fde6cce8","line":686,"updated":"2018-03-02 03:05:22.000000000","message":"Wrong name?","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        * Show load balancer status tree."},{"line_number":684,"context_line":"        * Validate the show reflects the expected values."},{"line_number":685,"context_line":"        \"\"\""},{"line_number":686,"context_line":"        lb_name \u003d data_utils.rand_name(\"lb_member_lb1-update\")"},{"line_number":687,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":688,"context_line":"            name\u003dlb_name,"},{"line_number":689,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_e24bb7ad","line":686,"in_reply_to":"1f9dbf25_fde6cce8","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":704,"context_line":"            self.os_primary.loadbalancer_client.get_loadbalancer_status,"},{"line_number":705,"context_line":"            lb[const.ID])"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":708,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":709,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":710,"context_line":"                          member2_client.get_loadbalancer_status,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_7ddabc17","line":707,"updated":"2018-03-02 03:05:22.000000000","message":"Technically fine maybe, but I think this is one of those copy/pastes again","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":704,"context_line":"            self.os_primary.loadbalancer_client.get_loadbalancer_status,"},{"line_number":705,"context_line":"            lb[const.ID])"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"        # Test that a different user cannot see this load balancer"},{"line_number":708,"context_line":"        member2_client \u003d self.os_roles_lb_member2.loadbalancer_client"},{"line_number":709,"context_line":"        self.assertRaises(exceptions.Forbidden,"},{"line_number":710,"context_line":"                          member2_client.get_loadbalancer_status,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_c24eb3c0","line":707,"in_reply_to":"1f9dbf25_7ddabc17","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"119d31cf2ccd74f6b26733bb9f6b1db8da6a6b32","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        * Failover the load balancer."},{"line_number":743,"context_line":"        * Wait for the load balancer to go ACTIVE."},{"line_number":744,"context_line":"        \"\"\""},{"line_number":745,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":746,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":747,"context_line":"        self.addClassResourceCleanup("},{"line_number":748,"context_line":"            test_utils.call_and_ignore_notfound_exc,"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_9dd788ee","line":745,"updated":"2018-03-02 03:05:22.000000000","message":"No name","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"f3134fce56a9a1cdff1b73a69974d6d1c6d42c54","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        * Failover the load balancer."},{"line_number":743,"context_line":"        * Wait for the load balancer to go ACTIVE."},{"line_number":744,"context_line":"        \"\"\""},{"line_number":745,"context_line":"        lb \u003d self.mem_lb_client.create_loadbalancer("},{"line_number":746,"context_line":"            vip_subnet_id\u003dself.lb_member_vip_subnet[const.ID])"},{"line_number":747,"context_line":"        self.addClassResourceCleanup("},{"line_number":748,"context_line":"            test_utils.call_and_ignore_notfound_exc,"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_02034b44","line":745,"in_reply_to":"1f9dbf25_9dd788ee","updated":"2018-03-24 00:03:19.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":623,"context_line":"        # use this command"},{"line_number":624,"context_line":"        self.assertRaises("},{"line_number":625,"context_line":"            exceptions.Forbidden,"},{"line_number":626,"context_line":"            self.os_primary.loadbalancer_client.update_loadbalancer,"},{"line_number":627,"context_line":"            lb[const.ID], admin_state_up\u003dTrue)"},{"line_number":628,"context_line":""},{"line_number":629,"context_line":"        # Assert we didn\u0027t go into PENDING_*"}],"source_content_type":"text/x-python","patch_set":24,"id":"bf659307_0744d945","line":626,"updated":"2018-04-09 08:55:22.000000000","message":"So you try to do an update here to change admin_state_up\u003dTrue, ok","commit_id":"62f43d4b69c973afa4c5e20da785b842446f0d7f"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        self._setup_lb_network_kwargs(lb_kwargs, ip_version)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        # Test that a user without the load balancer role cannot"},{"line_number":75,"context_line":"        # create a load balancer"},{"line_number":76,"context_line":"        self.assertRaises("},{"line_number":77,"context_line":"            exceptions.Forbidden,"},{"line_number":78,"context_line":"            self.os_primary.loadbalancer_client.create_loadbalancer,"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_40949b44","line":75,"updated":"2018-04-09 08:55:22.000000000","message":"Uhh, ok... What if the cloud we\u0027re running this against is using the alternate (old-style) policy file that we also ship as an option? This assumption is very specific to policy that not every cloud will have. I know we\u0027re trying to test the API here, but maybe we shouldn\u0027t be testing THIS exactly? Or else, we need to be very explicit about what tests you should be able to run against your cloud, and which are really only for devstack/gates.","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"dc41f8cee6187ff99aa81dfb83a098c348ccd42f","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                self.os_primary.loadbalancer_client.list_loadbalancers)"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"        # Check the default sort order, created_at"},{"line_number":320,"context_line":"        lbs \u003d self.mem_lb_client.list_loadbalancers()"},{"line_number":321,"context_line":"        self.assertEqual(lb1[const.DESCRIPTION], lbs[0][const.DESCRIPTION])"},{"line_number":322,"context_line":"        self.assertEqual(lb2[const.DESCRIPTION], lbs[1][const.DESCRIPTION])"},{"line_number":323,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"bf659307_924ae5a9","line":320,"updated":"2018-04-10 09:39:46.000000000","message":"This test assumes there are no other LBs in the project, but if any test that was run before this fails, then this will also fail.\nI\u0027m attaching a patch that resolves this as cleanly as I can figure...","commit_id":"e387aa655fdc6590156c6f49c48965479be69748"}],"octavia_tempest_plugin/tests/test_base.py":[{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"daf91d71ecdf72d9e4a24765b099693af8d316d8","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            if not conf_lb.test_subnet_override:"},{"line_number":112,"context_line":"                raise exceptions.InvalidConfiguration("},{"line_number":113,"context_line":"                    \"Configuration value test_subnet_override must be \""},{"line_number":114,"context_line":"                    \"specified if test_network_override is used.\")"},{"line_number":115,"context_line":"            cls.lb_member_vip_net \u003d conf_lb.test_network_override"},{"line_number":116,"context_line":"            cls.lb_member_vip_subnet \u003d conf_lb.test_subnet_override"},{"line_number":117,"context_line":"            cls.lb_member_1_net \u003d conf_lb.test_network_override"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_fcc0052d","line":114,"updated":"2018-04-03 18:58:35.000000000","message":"I think this is a problem for me...","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"daf91d71ecdf72d9e4a24765b099693af8d316d8","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            cls.os_roles_lb_member.keypairs_client.show_keypair,"},{"line_number":141,"context_line":"            keypair_name)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Create webserver 1 instance"},{"line_number":144,"context_line":"        network_uuid \u003d [{\u0027uuid\u0027: cls.lb_member_1_net[\u0027id\u0027]}]"},{"line_number":145,"context_line":"        server_kwargs \u003d {"},{"line_number":146,"context_line":"            \u0027name\u0027: data_utils.rand_name(\"lb_member_webserver1\"),"}],"source_content_type":"text/x-python","patch_set":20,"id":"1f9dbf25_1cd131fc","line":143,"updated":"2018-04-03 18:58:35.000000000","message":"I feel like the \"create webserver instance\" and \"validate webserver instance\" code should be DRYed out a bit into separate functions.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":140,"context_line":"            cls.os_roles_lb_member.keypairs_client.show_keypair,"},{"line_number":141,"context_line":"            keypair_name)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Create webserver 1 instance"},{"line_number":144,"context_line":"        network_uuid \u003d [{\u0027uuid\u0027: cls.lb_member_1_net[\u0027id\u0027]}]"},{"line_number":145,"context_line":"        server_kwargs \u003d {"},{"line_number":146,"context_line":"            \u0027name\u0027: data_utils.rand_name(\"lb_member_webserver1\"),"}],"source_content_type":"text/x-python","patch_set":20,"id":"bf659307_360c7b41","line":143,"in_reply_to":"1f9dbf25_1cd131fc","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                override_subnet \u003d None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            show_net \u003d cls.os_roles_lb_member.networks_client.show_network"},{"line_number":134,"context_line":"            override_network \u003d show_net(conf_lb.test_network_override)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"            cls.lb_member_vip_net \u003d override_network"},{"line_number":137,"context_line":"            cls.lb_member_vip_subnet \u003d override_subnet"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_9dad3c9d","line":134,"updated":"2018-04-09 08:55:22.000000000","message":"this needs to be show_net(...).get(\u0027network\u0027)","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                override_subnet \u003d None"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"            show_net \u003d cls.os_roles_lb_member.networks_client.show_network"},{"line_number":134,"context_line":"            override_network \u003d show_net(conf_lb.test_network_override)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"            cls.lb_member_vip_net \u003d override_network"},{"line_number":137,"context_line":"            cls.lb_member_vip_subnet \u003d override_subnet"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_8fd1745a","line":134,"in_reply_to":"bf659307_9dad3c9d","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_vip_net \u003d {}\u0027.format("},{"line_number":154,"context_line":"            cls.lb_member_vip_net[const.ID]))"},{"line_number":155,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_vip_subnet \u003d {}\u0027.format("},{"line_number":156,"context_line":"            cls.lb_member_vip_subnet[const.ID]))"},{"line_number":157,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_1_net \u003d {}\u0027.format("},{"line_number":158,"context_line":"            cls.lb_member_1_net[const.ID]))"},{"line_number":159,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_1_subnet \u003d {}\u0027.format("},{"line_number":160,"context_line":"            cls.lb_member_1_subnet[const.ID]))"},{"line_number":161,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_2_net \u003d {}\u0027.format("},{"line_number":162,"context_line":"            cls.lb_member_2_net[const.ID]))"},{"line_number":163,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_2_subnet \u003d {}\u0027.format("},{"line_number":164,"context_line":"            cls.lb_member_2_subnet[const.ID]))"},{"line_number":165,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_vip_ipv6_subnet \u003d {}\u0027.format("},{"line_number":166,"context_line":"            cls.lb_member_vip_ipv6_subnet[const.ID]))"},{"line_number":167,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_1_ipv6_subnet \u003d {}\u0027.format("},{"line_number":168,"context_line":"            cls.lb_member_1_ipv6_subnet[const.ID]))"},{"line_number":169,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_2_ipv6_subnet \u003d {}\u0027.format("},{"line_number":170,"context_line":"            cls.lb_member_2_ipv6_subnet[const.ID]))"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # If validation is disabled in this cloud, we won\u0027t be able to"},{"line_number":173,"context_line":"        # start the webservers, so don\u0027t even boot them."}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_bd05a07c","line":170,"range":{"start_line":155,"start_character":0,"end_line":170,"end_character":51},"updated":"2018-04-09 08:55:22.000000000","message":"Most of these are problematic -- with overrides and ipv4 only, NONE of these subnets will exist. Most will be None and the ID lookup will fail, but the ipv6 ones don\u0027t even exist as attributes on the class...","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_vip_net \u003d {}\u0027.format("},{"line_number":154,"context_line":"            cls.lb_member_vip_net[const.ID]))"},{"line_number":155,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_vip_subnet \u003d {}\u0027.format("},{"line_number":156,"context_line":"            cls.lb_member_vip_subnet[const.ID]))"},{"line_number":157,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_1_net \u003d {}\u0027.format("},{"line_number":158,"context_line":"            cls.lb_member_1_net[const.ID]))"},{"line_number":159,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_1_subnet \u003d {}\u0027.format("},{"line_number":160,"context_line":"            cls.lb_member_1_subnet[const.ID]))"},{"line_number":161,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_2_net \u003d {}\u0027.format("},{"line_number":162,"context_line":"            cls.lb_member_2_net[const.ID]))"},{"line_number":163,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_2_subnet \u003d {}\u0027.format("},{"line_number":164,"context_line":"            cls.lb_member_2_subnet[const.ID]))"},{"line_number":165,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_vip_ipv6_subnet \u003d {}\u0027.format("},{"line_number":166,"context_line":"            cls.lb_member_vip_ipv6_subnet[const.ID]))"},{"line_number":167,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_1_ipv6_subnet \u003d {}\u0027.format("},{"line_number":168,"context_line":"            cls.lb_member_1_ipv6_subnet[const.ID]))"},{"line_number":169,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_2_ipv6_subnet \u003d {}\u0027.format("},{"line_number":170,"context_line":"            cls.lb_member_2_ipv6_subnet[const.ID]))"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        # If validation is disabled in this cloud, we won\u0027t be able to"},{"line_number":173,"context_line":"        # start the webservers, so don\u0027t even boot them."}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_689bb665","line":170,"range":{"start_line":155,"start_character":0,"end_line":170,"end_character":51},"in_reply_to":"bf659307_bd05a07c","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        cls.lb_member_webserver1 \u003d server_details[\u0027server\u0027]"},{"line_number":194,"context_line":"        cls.webserver1_ip \u003d server_details[\u0027ipv4_address\u0027]"},{"line_number":195,"context_line":"        cls.webserver1_ipv6 \u003d server_details[\u0027ipv6_address\u0027]"},{"line_number":196,"context_line":"        cls.webserver1_public_ip \u003d server_details[\u0027public_ipv4_address\u0027]"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_webserver1 \u003d {}\u0027.format("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_404a5b27","line":195,"updated":"2018-04-09 08:55:22.000000000","message":"This explodes if we\u0027re on ipv4 only... Should use a .get() here","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        cls.lb_member_webserver1 \u003d server_details[\u0027server\u0027]"},{"line_number":194,"context_line":"        cls.webserver1_ip \u003d server_details[\u0027ipv4_address\u0027]"},{"line_number":195,"context_line":"        cls.webserver1_ipv6 \u003d server_details[\u0027ipv6_address\u0027]"},{"line_number":196,"context_line":"        cls.webserver1_public_ip \u003d server_details[\u0027public_ipv4_address\u0027]"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_webserver1 \u003d {}\u0027.format("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_6f80a047","line":195,"in_reply_to":"bf659307_404a5b27","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        cls.lb_member_webserver2 \u003d server_details[\u0027server\u0027]"},{"line_number":218,"context_line":"        cls.webserver2_ip \u003d server_details[\u0027ipv4_address\u0027]"},{"line_number":219,"context_line":"        cls.webserver2_ipv6 \u003d server_details[\u0027ipv6_address\u0027]"},{"line_number":220,"context_line":"        cls.webserver2_public_ip \u003d server_details[\u0027public_ipv4_address\u0027]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_webserver2 \u003d {}\u0027.format("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_5d1fa46f","line":219,"updated":"2018-04-09 08:55:22.000000000","message":"This explodes if we\u0027re on ipv4 only... Should use a .get() here","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        cls.lb_member_webserver2 \u003d server_details[\u0027server\u0027]"},{"line_number":218,"context_line":"        cls.webserver2_ip \u003d server_details[\u0027ipv4_address\u0027]"},{"line_number":219,"context_line":"        cls.webserver2_ipv6 \u003d server_details[\u0027ipv6_address\u0027]"},{"line_number":220,"context_line":"        cls.webserver2_public_ip \u003d server_details[\u0027public_ipv4_address\u0027]"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        LOG.debug(\u0027Octavia Setup: lb_member_webserver2 \u003d {}\u0027.format("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_0f97a492","line":219,"in_reply_to":"bf659307_5d1fa46f","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            if proc.returncode !\u003d 0:"},{"line_number":260,"context_line":"                raise exceptions.CommandFailed(proc.returncode, cmd,"},{"line_number":261,"context_line":"                                               stdout, stderr)"},{"line_number":262,"context_line":"        linux_client \u003d remote_client.RemoteClient("},{"line_number":263,"context_line":"            ip_address, CONF.validation.image_ssh_user, pkey\u003dssh_key)"},{"line_number":264,"context_line":"        linux_client.validate_authentication()"},{"line_number":265,"context_line":"        linux_client.exec_command(\u0027sudo screen -d -m {0} -port 80 \u0027"},{"line_number":266,"context_line":"                                  \u0027-id {1}\u0027.format(dest_file, start_id))"},{"line_number":267,"context_line":"        linux_client.exec_command(\u0027sudo screen -d -m {0} -port 81 \u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_00b8e327","line":264,"range":{"start_line":262,"start_character":0,"end_line":264,"end_character":46},"updated":"2018-04-09 08:55:22.000000000","message":"This needs to happen before the file copy, because this is what actually does the validation that the server is ready and connectable, and respects the retry settings in tempest -- the copy command above will fail once if run before the server is ready and terminate the whole test with no retries.\nJust move this above the `with` block and it\u0027ll be good. And, ideally, make the whole `with` block above into a separate method, as it was in the previous version of the testing code that you\u0027re reverting.","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            if proc.returncode !\u003d 0:"},{"line_number":260,"context_line":"                raise exceptions.CommandFailed(proc.returncode, cmd,"},{"line_number":261,"context_line":"                                               stdout, stderr)"},{"line_number":262,"context_line":"        linux_client \u003d remote_client.RemoteClient("},{"line_number":263,"context_line":"            ip_address, CONF.validation.image_ssh_user, pkey\u003dssh_key)"},{"line_number":264,"context_line":"        linux_client.validate_authentication()"},{"line_number":265,"context_line":"        linux_client.exec_command(\u0027sudo screen -d -m {0} -port 80 \u0027"},{"line_number":266,"context_line":"                                  \u0027-id {1}\u0027.format(dest_file, start_id))"},{"line_number":267,"context_line":"        linux_client.exec_command(\u0027sudo screen -d -m {0} -port 81 \u0027"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_e8a6e6ab","line":264,"range":{"start_line":262,"start_character":0,"end_line":264,"end_character":46},"in_reply_to":"bf659307_00b8e327","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            \u0027name\u0027: data_utils.rand_name(name),"},{"line_number":488,"context_line":"            \u0027flavorRef\u0027: CONF.compute.flavor_ref,"},{"line_number":489,"context_line":"            \u0027imageRef\u0027: CONF.compute.image_ref,"},{"line_number":490,"context_line":"            \u0027networks\u0027: network_uuid,"},{"line_number":491,"context_line":"            \u0027key_name\u0027: cls.lb_member_keypair[\u0027name\u0027]}"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        # Replace the name for clouds that have limitations"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_bd94c0e9","line":490,"updated":"2018-04-09 08:55:22.000000000","message":"So, I realize this seems silly maybe, but in our case we need the ability to NOT PASS the network at all to the server creation... T_T\nLooking at how to accomplish this sanely.","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            \u0027name\u0027: data_utils.rand_name(name),"},{"line_number":488,"context_line":"            \u0027flavorRef\u0027: CONF.compute.flavor_ref,"},{"line_number":489,"context_line":"            \u0027imageRef\u0027: CONF.compute.image_ref,"},{"line_number":490,"context_line":"            \u0027networks\u0027: network_uuid,"},{"line_number":491,"context_line":"            \u0027key_name\u0027: cls.lb_member_keypair[\u0027name\u0027]}"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        # Replace the name for clouds that have limitations"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_486cb207","line":490,"in_reply_to":"bf659307_bd94c0e9","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":496,"context_line":"            server_kwargs[\u0027name\u0027] \u003d \"m{}\".format(\"\".join("},{"line_number":497,"context_line":"                [r.choice(string.ascii_uppercase + string.digits)"},{"line_number":498,"context_line":"                 for i in range("},{"line_number":499,"context_line":"                     CONF.loadbalancer.random_server_name_length - 1)]"},{"line_number":500,"context_line":"            ))"},{"line_number":501,"context_line":"        if CONF.load_balancer.availability_zone:"},{"line_number":502,"context_line":"            server_kwargs[\u0027availability_zone\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_9d10dcaa","line":499,"updated":"2018-04-09 08:55:22.000000000","message":"Wrong config section name, needs that horribly persistent scourge of an underscore that I absolutely despise. Or better yet, can we go back to not using an underscore for this ANYWHERE? PLEASE? T_T","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":496,"context_line":"            server_kwargs[\u0027name\u0027] \u003d \"m{}\".format(\"\".join("},{"line_number":497,"context_line":"                [r.choice(string.ascii_uppercase + string.digits)"},{"line_number":498,"context_line":"                 for i in range("},{"line_number":499,"context_line":"                     CONF.loadbalancer.random_server_name_length - 1)]"},{"line_number":500,"context_line":"            ))"},{"line_number":501,"context_line":"        if CONF.load_balancer.availability_zone:"},{"line_number":502,"context_line":"            server_kwargs[\u0027availability_zone\u0027] \u003d ("}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_88896a27","line":499,"in_reply_to":"bf659307_9d10dcaa","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        LOG.info(\u0027Created server: {}\u0027.format(server))"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"        addresses \u003d server[\u0027addresses\u0027]"},{"line_number":522,"context_line":"        instance_network \u003d addresses[network[\u0027name\u0027]]"},{"line_number":523,"context_line":"        for addr in instance_network:"},{"line_number":524,"context_line":"            if addr[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":525,"context_line":"                webserver_details[\u0027ipv4_address\u0027] \u003d addr[\u0027addr\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_1da60c55","line":522,"updated":"2018-04-09 08:55:22.000000000","message":"In our case this is not going to be a known network name -- we just need to pull the first one, like:\n\naddresses.values()[0]\n\nAgain, not sure how to handle this sanely.","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":519,"context_line":"        LOG.info(\u0027Created server: {}\u0027.format(server))"},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"        addresses \u003d server[\u0027addresses\u0027]"},{"line_number":522,"context_line":"        instance_network \u003d addresses[network[\u0027name\u0027]]"},{"line_number":523,"context_line":"        for addr in instance_network:"},{"line_number":524,"context_line":"            if addr[\u0027version\u0027] \u003d\u003d 4:"},{"line_number":525,"context_line":"                webserver_details[\u0027ipv4_address\u0027] \u003d addr[\u0027addr\u0027]"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_686f36fc","line":522,"in_reply_to":"bf659307_1da60c55","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":553,"context_line":"    def _validate_webserver(cls, ip_address, start_id):"},{"line_number":554,"context_line":"        URL \u003d \u0027http://{0}\u0027.format(ip_address)"},{"line_number":555,"context_line":"        validators.validate_URL_response(URL, expected_body\u003dstr(start_id))"},{"line_number":556,"context_line":"        URL \u003d \u0027http://{0}:81\u0027.format(ip_address)"},{"line_number":557,"context_line":"        validators.validate_URL_response(URL, expected_body\u003dstr(start_id + 1))"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_a05c97ed","line":556,"updated":"2018-04-09 08:55:22.000000000","message":"So, 81 fails for me because we\u0027re not adding any security groups to these, and actually the fact that 80 works is a fluke of us having 80 open in our default SG. Neither of these SHOULD work here... How are they working for you?","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":553,"context_line":"    def _validate_webserver(cls, ip_address, start_id):"},{"line_number":554,"context_line":"        URL \u003d \u0027http://{0}\u0027.format(ip_address)"},{"line_number":555,"context_line":"        validators.validate_URL_response(URL, expected_body\u003dstr(start_id))"},{"line_number":556,"context_line":"        URL \u003d \u0027http://{0}:81\u0027.format(ip_address)"},{"line_number":557,"context_line":"        validators.validate_URL_response(URL, expected_body\u003dstr(start_id + 1))"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_af86b864","line":556,"in_reply_to":"bf659307_a05c97ed","updated":"2018-04-09 22:51:30.000000000","message":"When I create the networks for the test I disable port security (we aren\u0027t testing that, so why have it on).","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"d2641ffbefa2ad556426878cca9ba0e084cfdaa6","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                lb_kwargs[const.VIP_NETWORK_ID] \u003d ("},{"line_number":577,"context_line":"                    cls.lb_member_vip_net[const.ID])"},{"line_number":578,"context_line":"        else:"},{"line_number":579,"context_line":"            lb_kwargs[const.VIP_NETWORK_ID] \u003d cls.lb_member_vip_net[const.ID]"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_3bebd8dc","line":579,"updated":"2018-04-09 08:55:22.000000000","message":"Need to also set:\n\nlb_kwargs[const.VIP_SUBNET_ID] \u003d None\n\notherwise we\u0027ll get an explosion later in the scenario CRUD","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"672f9067b3c954be0eb0812b3057904aa7be45db","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                lb_kwargs[const.VIP_NETWORK_ID] \u003d ("},{"line_number":577,"context_line":"                    cls.lb_member_vip_net[const.ID])"},{"line_number":578,"context_line":"        else:"},{"line_number":579,"context_line":"            lb_kwargs[const.VIP_NETWORK_ID] \u003d cls.lb_member_vip_net[const.ID]"}],"source_content_type":"text/x-python","patch_set":26,"id":"bf659307_0876bad9","line":579,"in_reply_to":"bf659307_3bebd8dc","updated":"2018-04-09 22:51:30.000000000","message":"Done","commit_id":"3e9514ff7a2f5b808a0ea0a598167e6933de3542"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"ed1fab5f81a8eba25d5a994a2fca916642f7305c","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"        # If validation is disabled in this cloud, we won\u0027t be able to"},{"line_number":187,"context_line":"        # start the webservers, so don\u0027t even boot them."},{"line_number":188,"context_line":"        if not CONF.validation.run_validation:"},{"line_number":189,"context_line":"            return"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        # Create a keypair for the webservers"}],"source_content_type":"text/x-python","patch_set":27,"id":"bf659307_82f3829e","line":188,"updated":"2018-04-09 23:51:34.000000000","message":"Oh, well if we\u0027re checking for this, I take it back -- we should go ahead and use the validation resources. My main concern was that we would have to make sure people turned this on, but if it\u0027s required anyway...","commit_id":"f65ca8e5fba1eb2c3c9d23d2440519ec9795fbec"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"ed1fab5f81a8eba25d5a994a2fca916642f7305c","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                waiters.wait_for_not_found,"},{"line_number":230,"context_line":"                cls.lb_mem_SGr_client.delete_security_group_rule,"},{"line_number":231,"context_line":"                cls.lb_mem_SGr_client.show_security_group_rule,"},{"line_number":232,"context_line":"                SGr[\u0027id\u0027])"},{"line_number":233,"context_line":"            SGr \u003d cls.lb_mem_SGr_client.create_security_group_rule("},{"line_number":234,"context_line":"                direction\u003d\u0027ingress\u0027,"},{"line_number":235,"context_line":"                security_group_id\u003dcls.lb_member_sec_group[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":28,"id":"bf659307_421a4a7d","line":232,"updated":"2018-04-09 23:51:34.000000000","message":"nit: missing comment here for the ssh rule","commit_id":"14c72bb948cf14fa590c78e0971b3cfad94d3aba"}],"playbooks/Octavia-DSVM/pre.yaml":[{"author":{"_account_id":25618,"name":"Paweł Suder","email":"pawel@suder.info","username":"SuderPawel"},"change_message_id":"6c643f2ef7cbd7d50e844279f624c84b97466459","unresolved":false,"context_lines":[{"line_number":5,"context_line":"        cmd: |"},{"line_number":6,"context_line":"          set -e"},{"line_number":7,"context_line":"          set -x"},{"line_number":8,"context_line":"          if $(egrep --quiet \u0027(vmx|svm)\u0027 /proc/cpuinfo) \u0026\u0026 [[ ! $(hostname) \u003d~ \"ovh\" ]]; then"},{"line_number":9,"context_line":"              export DEVSTACK_GATE_LIBVIRT_TYPE\u003dkvm"},{"line_number":10,"context_line":"          fi"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"1f9dbf25_d9d1c459","line":8,"updated":"2018-02-28 14:10:01.000000000","message":"OVH - clarifying issue with gates.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":10273,"name":"Adam Harwell","email":"flux.adam@gmail.com","username":"rm_you"},"change_message_id":"e71501b15d62596d2d9722bac6e36e5f029e8e8e","unresolved":false,"context_lines":[{"line_number":5,"context_line":"        cmd: |"},{"line_number":6,"context_line":"          set -e"},{"line_number":7,"context_line":"          set -x"},{"line_number":8,"context_line":"          if $(egrep --quiet \u0027(vmx|svm)\u0027 /proc/cpuinfo) \u0026\u0026 [[ ! $(hostname) \u003d~ \"ovh\" ]]; then"},{"line_number":9,"context_line":"              export DEVSTACK_GATE_LIBVIRT_TYPE\u003dkvm"},{"line_number":10,"context_line":"          fi"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"1f9dbf25_1c7e1119","line":8,"in_reply_to":"1f9dbf25_c67d461d","updated":"2018-03-02 15:40:45.000000000","message":"Which it looks like we may not need anymore. :)","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"},{"author":{"_account_id":11628,"name":"Michael Johnson","email":"johnsomor@gmail.com","username":"johnsom"},"change_message_id":"c6226852d8dcaf90482cf152c8780f531d6e57b6","unresolved":false,"context_lines":[{"line_number":5,"context_line":"        cmd: |"},{"line_number":6,"context_line":"          set -e"},{"line_number":7,"context_line":"          set -x"},{"line_number":8,"context_line":"          if $(egrep --quiet \u0027(vmx|svm)\u0027 /proc/cpuinfo) \u0026\u0026 [[ ! $(hostname) \u003d~ \"ovh\" ]]; then"},{"line_number":9,"context_line":"              export DEVSTACK_GATE_LIBVIRT_TYPE\u003dkvm"},{"line_number":10,"context_line":"          fi"},{"line_number":11,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"1f9dbf25_c67d461d","line":8,"in_reply_to":"1f9dbf25_d9d1c459","updated":"2018-03-01 22:49:11.000000000","message":"This is just moving the OVH exception into a playbook from the previous gate hook location.","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"}],"zuul.d/jobs.yaml":[{"author":{"_account_id":6469,"name":"Carlos Gonçalves","display_name":"Carlos Goncalves","email":"cgoncalves@redhat.com","username":"cgoncalves"},"change_message_id":"600d77f30fc57c1f2520aeb3711aae069eb0c583","unresolved":false,"context_lines":[{"line_number":139,"context_line":"          $OCTAVIA_CONF:"},{"line_number":140,"context_line":"            api_settings:"},{"line_number":141,"context_line":"              api_v1_enabled: False"},{"line_number":142,"context_line":"      tempest_concurrency: 2"},{"line_number":143,"context_line":"      tempest_test_regex: ^octavia_tempest_plugin.tests.scenario.v2"},{"line_number":144,"context_line":"      tox_envlist: all"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":20,"id":"df7087c5_dad87880","line":142,"range":{"start_line":142,"start_character":6,"end_line":142,"end_character":28},"updated":"2018-03-12 10:16:56.000000000","message":"you may want to set it to 1: https://review.openstack.org/#/c/551801/","commit_id":"7d9b9a6c74e0585eb388437124303849da16b3e0"}]}
