)]}'
{"CHANGELOG.rst":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1072c839710073a8d7bcb0f697cb4267a81de21c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"~~~~~"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"* Added neutron trunk scenarios"},{"line_number":26,"context_line":"* Added barbican scenarios."},{"line_number":27,"context_line":"* Added octavia scenarios."},{"line_number":28,"context_line":"* Support for osprofiler config in Devstack plugin."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_0449f763","side":"PARENT","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":27},"updated":"2018-11-30 22:56:06.000000000","message":"the current commit deosn\u0027t relate to barbican scenarios at all","commit_id":"ef63f8c2cbcf9d41aae33602e6d1e25e84b99eec"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"11f40a178255951c1096f55b1379fc060c4e8920","unresolved":false,"context_lines":[{"line_number":23,"context_line":"~~~~~"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"* Added neutron trunk scenarios"},{"line_number":26,"context_line":"* Added barbican scenarios."},{"line_number":27,"context_line":"* Added octavia scenarios."},{"line_number":28,"context_line":"* Support for osprofiler config in Devstack plugin."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"3f79a3b5_56beacb0","side":"PARENT","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":27},"in_reply_to":"3f79a3b5_0449f763","updated":"2018-12-03 13:06:57.000000000","message":"Done","commit_id":"ef63f8c2cbcf9d41aae33602e6d1e25e84b99eec"}],"rally_openstack/scenarios/octavia/loadbalancers.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1072c839710073a8d7bcb0f697cb4267a81de21c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        The scenario creates a loadbalancer for every subnet and then lists"},{"line_number":48,"context_line":"        loadbalancers."},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        loadbalancers \u003d []"},{"line_number":51,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":52,"context_line":"        for network in networks:"},{"line_number":53,"context_line":"            for subnet_id in network.get(\"subnets\", []):"},{"line_number":54,"context_line":"                lb \u003d self.octavia.load_balancer_create(subnet_id)"},{"line_number":55,"context_line":"                loadbalancers.append(lb)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for loadbalancer in loadbalancers:"},{"line_number":58,"context_line":"            self.octavia.wait_for_loadbalancer_prov_status(loadbalancer)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c409bf83","side":"PARENT","line":55,"range":{"start_line":50,"start_character":8,"end_line":55,"end_character":40},"updated":"2018-11-30 22:56:06.000000000","message":"not sure that we need to merge this logic inside self.octavia.load_balancer_create","commit_id":"ef63f8c2cbcf9d41aae33602e6d1e25e84b99eec"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"0ff6f2855025769865225f007583785330e62b7c","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        The scenario creates a loadbalancer for every subnet and then lists"},{"line_number":48,"context_line":"        loadbalancers."},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        loadbalancers \u003d []"},{"line_number":51,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":52,"context_line":"        for network in networks:"},{"line_number":53,"context_line":"            for subnet_id in network.get(\"subnets\", []):"},{"line_number":54,"context_line":"                lb \u003d self.octavia.load_balancer_create(subnet_id)"},{"line_number":55,"context_line":"                loadbalancers.append(lb)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for loadbalancer in loadbalancers:"},{"line_number":58,"context_line":"            self.octavia.wait_for_loadbalancer_prov_status(loadbalancer)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_6221f1a0","side":"PARENT","line":55,"range":{"start_line":50,"start_character":8,"end_line":55,"end_character":40},"in_reply_to":"3f79a3b5_2c8fa0d3","updated":"2018-12-11 15:19:51.000000000","message":"Done","commit_id":"ef63f8c2cbcf9d41aae33602e6d1e25e84b99eec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"cab6c573cb51d38d3cd85d881241d1245eacf12e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        The scenario creates a loadbalancer for every subnet and then lists"},{"line_number":48,"context_line":"        loadbalancers."},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        loadbalancers \u003d []"},{"line_number":51,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":52,"context_line":"        for network in networks:"},{"line_number":53,"context_line":"            for subnet_id in network.get(\"subnets\", []):"},{"line_number":54,"context_line":"                lb \u003d self.octavia.load_balancer_create(subnet_id)"},{"line_number":55,"context_line":"                loadbalancers.append(lb)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for loadbalancer in loadbalancers:"},{"line_number":58,"context_line":"            self.octavia.wait_for_loadbalancer_prov_status(loadbalancer)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_2c8fa0d3","side":"PARENT","line":55,"range":{"start_line":50,"start_character":8,"end_line":55,"end_character":40},"in_reply_to":"3f79a3b5_76908842","updated":"2018-12-09 09:41:44.000000000","message":"yeah, I got it. But I mean that I like this old code(which was before the current change) more.","commit_id":"ef63f8c2cbcf9d41aae33602e6d1e25e84b99eec"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"11f40a178255951c1096f55b1379fc060c4e8920","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        The scenario creates a loadbalancer for every subnet and then lists"},{"line_number":48,"context_line":"        loadbalancers."},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        loadbalancers \u003d []"},{"line_number":51,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":52,"context_line":"        for network in networks:"},{"line_number":53,"context_line":"            for subnet_id in network.get(\"subnets\", []):"},{"line_number":54,"context_line":"                lb \u003d self.octavia.load_balancer_create(subnet_id)"},{"line_number":55,"context_line":"                loadbalancers.append(lb)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for loadbalancer in loadbalancers:"},{"line_number":58,"context_line":"            self.octavia.wait_for_loadbalancer_prov_status(loadbalancer)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_76908842","side":"PARENT","line":55,"range":{"start_line":50,"start_character":8,"end_line":55,"end_character":40},"in_reply_to":"3f79a3b5_c409bf83","updated":"2018-12-03 13:06:57.000000000","message":"According to the Octavia API we need a loadbalancer id for things like pools, etc. To make this simplier I wrapped it in a function","commit_id":"ef63f8c2cbcf9d41aae33602e6d1e25e84b99eec"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1072c839710073a8d7bcb0f697cb4267a81de21c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                    platform\u003d\"openstack\")"},{"line_number":41,"context_line":"class CreateAndListLoadbalancers(OctaviaBase):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def run(self, lb_create_args\u003dNone):"},{"line_number":44,"context_line":"        \"\"\"Create a loadbalancer per each subnet and then list loadbalancers."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Measure the \"Octavia loadbalancer list\" command performance."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_246e7365","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":37},"updated":"2018-11-30 22:56:06.000000000","message":"if we allow transmitting more arguments it would be nice to ensure that there will not be any typos. To prevent typos and make documentation better, let\u0027s specify explicitly all arguments.\n\nBased on https://developer.openstack.org/api-ref/load-balancer/v2/?expanded\u003dcreate-a-load-balancer-detail#create-a-load-balancer , let\u0027s allow: admin_state_up, description, flavor_id, listeners, provider, vip_qos_policy_id .\n\nIt relates to all scenarios.","commit_id":"c1cc47e2f67b57e982fa54e76665283f3b983e9a"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"11f40a178255951c1096f55b1379fc060c4e8920","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                    platform\u003d\"openstack\")"},{"line_number":41,"context_line":"class CreateAndListLoadbalancers(OctaviaBase):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def run(self, lb_create_args\u003dNone):"},{"line_number":44,"context_line":"        \"\"\"Create a loadbalancer per each subnet and then list loadbalancers."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Measure the \"Octavia loadbalancer list\" command performance."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_f66ed863","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":37},"in_reply_to":"3f79a3b5_246e7365","updated":"2018-12-03 13:06:57.000000000","message":"I was trying to keep the arguments the same as the other neutron/lbaas scenarios, so additional changes are made to the Octavia API users can use it right away in their performance/scale testing.","commit_id":"c1cc47e2f67b57e982fa54e76665283f3b983e9a"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"0ff6f2855025769865225f007583785330e62b7c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                    platform\u003d\"openstack\")"},{"line_number":41,"context_line":"class CreateAndListLoadbalancers(OctaviaBase):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def run(self, lb_create_args\u003dNone):"},{"line_number":44,"context_line":"        \"\"\"Create a loadbalancer per each subnet and then list loadbalancers."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Measure the \"Octavia loadbalancer list\" command performance."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_c20c8538","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":37},"in_reply_to":"3f79a3b5_ec78c8f6","updated":"2018-12-11 15:19:51.000000000","message":"Done","commit_id":"c1cc47e2f67b57e982fa54e76665283f3b983e9a"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"cab6c573cb51d38d3cd85d881241d1245eacf12e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                    platform\u003d\"openstack\")"},{"line_number":41,"context_line":"class CreateAndListLoadbalancers(OctaviaBase):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def run(self, lb_create_args\u003dNone):"},{"line_number":44,"context_line":"        \"\"\"Create a loadbalancer per each subnet and then list loadbalancers."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        Measure the \"Octavia loadbalancer list\" command performance."}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_ec78c8f6","line":43,"range":{"start_line":43,"start_character":16,"end_line":43,"end_character":37},"in_reply_to":"3f79a3b5_f66ed863","updated":"2018-12-09 09:41:44.000000000","message":"\u003e I was trying to keep the arguments the same as the other neutron\n\nI do not know the historical reasons, but I dislike user interface of neutron scenarios.\nThere are several bad issues related to such an approach:\n\n* bad documentation. There are a lot of rally users who need to test their openstack cluster. They do not know much about specific service api and it is hard to imagine which actual arguments scenario accept.\n\n* bad validation. Easy to miss a \u0027required\u0027 argument or transmit \u0027redundant\u0027 one without noticing this before the actual workload will be started (only after context execution).","commit_id":"c1cc47e2f67b57e982fa54e76665283f3b983e9a"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c907fba71694d0f9a9cf9b4417adbe165b6cb545","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            vip_subnet_id\u003dNone):"},{"line_number":51,"context_line":"        \"\"\"Create a loadbalancer per each subnet and then list loadbalancers."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        :param name: Human-readable name of the loadbalancer"},{"line_number":54,"context_line":"        :param description: Human-readable description of the loadbalancer"},{"line_number":55,"context_line":"        :param admin_state: The administrative state of the loadbalancer,"},{"line_number":56,"context_line":"            which is up(true) or down(false)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_863733af","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":60},"updated":"2018-12-14 15:09:45.000000000","message":"we should not allow to setup this, so please remove this argument.","commit_id":"68f977ab01028f3ec4ca843aa0fba6d187f05f43"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"2146e6fba3a036a0a35bdbc18427b86997a4ca13","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            vip_subnet_id\u003dNone):"},{"line_number":51,"context_line":"        \"\"\"Create a loadbalancer per each subnet and then list loadbalancers."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        :param name: Human-readable name of the loadbalancer"},{"line_number":54,"context_line":"        :param description: Human-readable description of the loadbalancer"},{"line_number":55,"context_line":"        :param admin_state: The administrative state of the loadbalancer,"},{"line_number":56,"context_line":"            which is up(true) or down(false)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_7ac12dfc","line":53,"range":{"start_line":53,"start_character":8,"end_line":53,"end_character":60},"in_reply_to":"3f79a3b5_863733af","updated":"2018-12-17 14:45:05.000000000","message":"Done","commit_id":"68f977ab01028f3ec4ca843aa0fba6d187f05f43"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c907fba71694d0f9a9cf9b4417adbe165b6cb545","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        :param flavor_id: The ID of the flavor"},{"line_number":59,"context_line":"        :param provider: Provider name for the loadbalancer"},{"line_number":60,"context_line":"        :param vip_qos_policy_id: The ID of the QoS policy"},{"line_number":61,"context_line":"        :param vip_address: The IP address of the VirtualIP"},{"line_number":62,"context_line":"        :param vip_network_id: The ID of the network for the VirutalIP"},{"line_number":63,"context_line":"        :param vip_port_id: The ID of the port for the VirtualIP"},{"line_number":64,"context_line":"        :param vip_subnet_id: The ID of the subnet for the VirtualIP"},{"line_number":65,"context_line":"        \"\"\""},{"line_number":66,"context_line":"        subnets \u003d []"},{"line_number":67,"context_line":"        loadbalancers \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_e65947ff","line":64,"range":{"start_line":61,"start_character":0,"end_line":64,"end_character":68},"updated":"2018-12-14 15:09:45.000000000","message":"as far as I can guess some of these parameters are redundant since we are taking subnet from networks context. Please remove those which we do not need.","commit_id":"68f977ab01028f3ec4ca843aa0fba6d187f05f43"},{"author":{"_account_id":24,"name":"Chuck Short","email":"charles.short@windriver.com","username":"zulcss"},"change_message_id":"2146e6fba3a036a0a35bdbc18427b86997a4ca13","unresolved":false,"context_lines":[{"line_number":58,"context_line":"        :param flavor_id: The ID of the flavor"},{"line_number":59,"context_line":"        :param provider: Provider name for the loadbalancer"},{"line_number":60,"context_line":"        :param vip_qos_policy_id: The ID of the QoS policy"},{"line_number":61,"context_line":"        :param vip_address: The IP address of the VirtualIP"},{"line_number":62,"context_line":"        :param vip_network_id: The ID of the network for the VirutalIP"},{"line_number":63,"context_line":"        :param vip_port_id: The ID of the port for the VirtualIP"},{"line_number":64,"context_line":"        :param vip_subnet_id: The ID of the subnet for the VirtualIP"},{"line_number":65,"context_line":"        \"\"\""},{"line_number":66,"context_line":"        subnets \u003d []"},{"line_number":67,"context_line":"        loadbalancers \u003d []"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_3acbb51c","line":64,"range":{"start_line":61,"start_character":0,"end_line":64,"end_character":68},"in_reply_to":"3f79a3b5_e65947ff","updated":"2018-12-17 14:45:05.000000000","message":"Done","commit_id":"68f977ab01028f3ec4ca843aa0fba6d187f05f43"}]}
