)]}'
{"rally-jobs/rally-neutron.yaml":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"98d72726649a4b30312423374f4939145112cb57","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        users:"},{"line_number":173,"context_line":"          tenants: 1"},{"line_number":174,"context_line":"          users_per_tenant: 1"},{"line_number":175,"context_line":"        network: {\"add_lb_pool\": True}"},{"line_number":176,"context_line":"        quotas:"},{"line_number":177,"context_line":"          neutron:"},{"line_number":178,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":7,"id":"fa32b979_9a4b4859","line":175,"updated":"2015-06-23 11:26:12.000000000","message":"see my comment on previous commit.","commit_id":"3ab78466743266d6b96460845ac238ca9ab4a8f8"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2e2e49165acb0cc9a87bc4dca72f967cb6d1f98b","unresolved":false,"context_lines":[{"line_number":173,"context_line":"          tenants: 1"},{"line_number":174,"context_line":"          users_per_tenant: 1"},{"line_number":175,"context_line":"        network: {}"},{"line_number":176,"context_line":"        lbaas_v1: {}"},{"line_number":177,"context_line":"        quotas:"},{"line_number":178,"context_line":"          neutron:"},{"line_number":179,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"ba3cc151_5a82dc01","line":176,"updated":"2015-06-30 11:21:41.000000000","message":"please see my comment on previous commit.","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"1de10403cfe78ce9bd3806227e6a748d05ceff83","unresolved":false,"context_lines":[{"line_number":173,"context_line":"          tenants: 1"},{"line_number":174,"context_line":"          users_per_tenant: 1"},{"line_number":175,"context_line":"        network: {}"},{"line_number":176,"context_line":"        lbaas_v1: {}"},{"line_number":177,"context_line":"        quotas:"},{"line_number":178,"context_line":"          neutron:"},{"line_number":179,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"ba3cc151_9f9b6c72","line":176,"in_reply_to":"ba3cc151_5a82dc01","updated":"2015-06-30 12:34:28.000000000","message":"You meant something like this?\n\nlbaas_v1:\n  pool : {}","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"cc005c54d0b2876f75c1eadeceea3ca21788475a","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        vip_create_args: {}"},{"line_number":167,"context_line":"      runner:"},{"line_number":168,"context_line":"        type: \"constant\""},{"line_number":169,"context_line":"        times: {{smoke or 20}}"},{"line_number":170,"context_line":"        concurrency: 10"},{"line_number":171,"context_line":"      context:"},{"line_number":172,"context_line":"        users:"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"3a50d1a3_62cd0e30","line":169,"updated":"2015-07-23 12:45:23.000000000","message":"We have `times: 1\u0027 on gates - having 1 iteration is not informative, I suggest to put at least 2\n\nhttp://logs.openstack.org/27/193527/27/check/gate-rally-dsvm-neutron-rally/c8565a4/rally-plot/results.html.gz#/NeutronLoadbalancerV1.create_and_list_vips/overview","commit_id":"66663c5e00a6ff61e86924b4b57ef08f9ab53184"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"998110607fd64e33f2f80c06ced1efe379f84c5d","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        vip_create_args: {}"},{"line_number":167,"context_line":"      runner:"},{"line_number":168,"context_line":"        type: \"constant\""},{"line_number":169,"context_line":"        times: {{smoke or 20}}"},{"line_number":170,"context_line":"        concurrency: 10"},{"line_number":171,"context_line":"      context:"},{"line_number":172,"context_line":"        users:"}],"source_content_type":"text/x-yaml","patch_set":27,"id":"3a50d1a3_c81e5c5f","line":169,"in_reply_to":"3a50d1a3_62cd0e30","updated":"2015-07-24 03:24:55.000000000","message":"Should I remove smoke and simply make \"times: 2\"??","commit_id":"66663c5e00a6ff61e86924b4b57ef08f9ab53184"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"4c75692a572fcfdd2f4ac442ac488a9330df917a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        network: {}"},{"line_number":109,"context_line":"        lbaas:"},{"line_number":110,"context_line":"          pool: {}"},{"line_number":111,"context_line":"          lbaas_version: 1"},{"line_number":112,"context_line":"        quotas:"},{"line_number":113,"context_line":"          neutron:"},{"line_number":114,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":34,"id":"fa1b9901_663093e9","side":"PARENT","line":111,"updated":"2015-08-21 21:53:11.000000000","message":"Why this section deleted?","commit_id":"d3a45d922852f76b000df801b25588c6589e3d21"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"4c75692a572fcfdd2f4ac442ac488a9330df917a","unresolved":false,"context_lines":[{"line_number":166,"context_line":"        vip_create_args: {}"},{"line_number":167,"context_line":"      runner:"},{"line_number":168,"context_line":"        type: \"constant\""},{"line_number":169,"context_line":"        times: 2"},{"line_number":170,"context_line":"        concurrency: 10"},{"line_number":171,"context_line":"      context:"},{"line_number":172,"context_line":"        users:"}],"source_content_type":"text/x-yaml","patch_set":34,"id":"fa1b9901_a636abe5","line":169,"updated":"2015-08-21 21:53:11.000000000","message":"lets write {{smoke or 10}}","commit_id":"3b68994bc15fb98d6b909cde6bcb0e3bb3ef2a50"},{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"df3283d0aa00ce3ffeee62e1b1bf7116806f653c","unresolved":false,"context_lines":[{"line_number":175,"context_line":"        network: {}"},{"line_number":176,"context_line":"        lbaas:"},{"line_number":177,"context_line":"          pool : {}"},{"line_number":178,"context_line":"          lbaas_version: 1"},{"line_number":179,"context_line":"        quotas:"},{"line_number":180,"context_line":"          neutron:"},{"line_number":181,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":40,"id":"da20952f_0f7d151c","line":178,"updated":"2015-08-27 08:54:02.000000000","message":"Since you are creating the pools in the scenario I don\u0027t think it\u0027s necessary to add this context.","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"}],"rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py":[{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"bdffa4f855d803de9eef9390982cce9fa908b7de","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            self._update_v1_pool(pool, **pool_update_args)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @validation.restricted_parameters(\"subnet_id\", subdict\u003d\"vip_create_args\")"},{"line_number":90,"context_line":"    @validation.restricted_parameters(\"pool_id\", subdict\u003d\"vip_create_args\")"},{"line_number":91,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":92,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":93,"context_line":"    @validation.required_contexts(\"network\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_b847711c","line":90,"updated":"2015-06-30 08:58:04.000000000","message":"Use @validation.restricted_parameters([\"subnet_id\", \"pool_id\"], subdict\u003d\"vip_create_args\") instead.\nhttps://git.openstack.org/cgit/openstack/rally/tree/rally/benchmark/validation.py#n611","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"40456cef0ba592f0e8cfcbb8e395377a48639025","unresolved":false,"context_lines":[{"line_number":87,"context_line":"            self._update_v1_pool(pool, **pool_update_args)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @validation.restricted_parameters(\"subnet_id\", subdict\u003d\"vip_create_args\")"},{"line_number":90,"context_line":"    @validation.restricted_parameters(\"pool_id\", subdict\u003d\"vip_create_args\")"},{"line_number":91,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":92,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":93,"context_line":"    @validation.required_contexts(\"network\")"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_674ce470","line":90,"in_reply_to":"ba3cc151_b847711c","updated":"2015-06-30 11:47:03.000000000","message":"Done","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"45d06ba0a4b9fa1771d8cea47b40570cf4cb2cfc","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    @validation.restricted_parameters([\"pool_id\", \"subnet_id\"],"},{"line_number":94,"context_line":"                                      subdict\u003d\"vip_create_args\")"},{"line_number":95,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":96,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":97,"context_line":"    @validation.required_contexts(\"network\")"},{"line_number":98,"context_line":"    @validation.required_contexts(\"lbaas_v1\")"},{"line_number":99,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"neutron\"]})"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_dda85cde","line":96,"updated":"2015-07-04 10:31:45.000000000","message":"You wrote user\u003dTrue but _create_v1_vip use admin_client","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"5d00cf9ecf08360eca33d950bc639c67e8e9fec9","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    @validation.restricted_parameters([\"pool_id\", \"subnet_id\"],"},{"line_number":94,"context_line":"                                      subdict\u003d\"vip_create_args\")"},{"line_number":95,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":96,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":97,"context_line":"    @validation.required_contexts(\"network\")"},{"line_number":98,"context_line":"    @validation.required_contexts(\"lbaas_v1\")"},{"line_number":99,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"neutron\"]})"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_22fe75ae","line":96,"in_reply_to":"ba3cc151_dda85cde","updated":"2015-07-08 12:58:11.000000000","message":"I fixed this. I am not supposed to use admin_clients. Thanks for pointing it out. :)","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"45d06ba0a4b9fa1771d8cea47b40570cf4cb2cfc","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def create_and_list_vips(self, vip_create_args\u003dNone):"},{"line_number":101,"context_line":"        \"\"\"Create a vip(v1) and then list vips(v1)."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        Measure the \"neutron lb-vip-list\" command performance."},{"line_number":104,"context_line":"        The scenario creates a vip for every pool created and then lists vips."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param vip_create_args: dict, POST /lb/vips request options"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_bd5558fb","line":103,"updated":"2015-07-04 10:31:45.000000000","message":"I think this line redundant and wrong. Please delete here.","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"5d00cf9ecf08360eca33d950bc639c67e8e9fec9","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    def create_and_list_vips(self, vip_create_args\u003dNone):"},{"line_number":101,"context_line":"        \"\"\"Create a vip(v1) and then list vips(v1)."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        Measure the \"neutron lb-vip-list\" command performance."},{"line_number":104,"context_line":"        The scenario creates a vip for every pool created and then lists vips."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param vip_create_args: dict, POST /lb/vips request options"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_42229953","line":103,"in_reply_to":"ba3cc151_bd5558fb","updated":"2015-07-08 12:58:11.000000000","message":"I have rephrased it.","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"45d06ba0a4b9fa1771d8cea47b40570cf4cb2cfc","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        \"\"\"Create a vip(v1) and then list vips(v1)."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"        Measure the \"neutron lb-vip-list\" command performance."},{"line_number":104,"context_line":"        The scenario creates a vip for every pool created and then lists vips."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"        :param vip_create_args: dict, POST /lb/vips request options"},{"line_number":107,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_dd5a9c2a","line":104,"updated":"2015-07-04 10:31:45.000000000","message":"Please delete \"This scenario\"","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"45d06ba0a4b9fa1771d8cea47b40570cf4cb2cfc","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":109,"context_line":"        for net in self.context.get(\"tenant\", {}).get(\"networks\", []):"},{"line_number":110,"context_line":"            for pool in net[\"lb_pools\"]:"},{"line_number":111,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":112,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_fd99a0d1","line":111,"updated":"2015-07-04 10:31:45.000000000","message":"Please add atomic action context here as in the link https://github.com/openstack/rally/blob/master/rally/plugins/openstack/scenarios/murano/environments.py#L64 and therefore rewrite _create_v1_vip","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"5d00cf9ecf08360eca33d950bc639c67e8e9fec9","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":109,"context_line":"        for net in self.context.get(\"tenant\", {}).get(\"networks\", []):"},{"line_number":110,"context_line":"            for pool in net[\"lb_pools\"]:"},{"line_number":111,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":112,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_c21309b7","line":111,"in_reply_to":"ba3cc151_fd99a0d1","updated":"2015-07-08 12:58:11.000000000","message":"Why is the decorator @base.atomic_action_timer(\"neutron.create_vip\") in https://review.openstack.org/#/c/193527/16/rally/plugins/openstack/scenarios/neutron/utils.py,cm #343 not working? :(","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"59b7c6091b8a9afd02b674ccecf649900809e3ae","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    @validation.restricted_parameters([\"pool_id\", \"subnet_id\"],"},{"line_number":94,"context_line":"                                      subdict\u003d\"vip_create_args\")"},{"line_number":95,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":96,"context_line":"    @validation.required_openstack(admin\u003dTrue)"},{"line_number":97,"context_line":"    @validation.required_contexts(\"network\")"},{"line_number":98,"context_line":"    @validation.required_contexts(\"lbaas_v1\")"},{"line_number":99,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"neutron\"]})"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_773c12e1","line":96,"updated":"2015-07-09 02:28:48.000000000","message":"any reason to use admin here?","commit_id":"6144f01151cc83d4b1272203534049750b87afb6"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"6d7d10a58bff2274d634ba36e7bdc72ad6e75157","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":110,"context_line":"        for net in self.context.get(\"tenant\", {}).get(\"networks\", []):"},{"line_number":111,"context_line":"            for pool in net[\"lb_pools\"]:"},{"line_number":112,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":113,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_4f24d60b","line":112,"updated":"2015-07-09 04:38:19.000000000","message":"Please use atomic_action here. See my comment here in patch 16. If you can\u0027t write this. Please describe what are you can\u0027t to do. Thank you for you efforts. I believe we are very close to finish this patch.","commit_id":"6144f01151cc83d4b1272203534049750b87afb6"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"0f5117420a35f2ccd5a0eac9512458e9ed9374ba","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":110,"context_line":"        for net in self.context.get(\"tenant\", {}).get(\"networks\", []):"},{"line_number":111,"context_line":"            for pool in net[\"lb_pools\"]:"},{"line_number":112,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":113,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_a7b860c9","line":112,"in_reply_to":"ba3cc151_4f24d60b","updated":"2015-07-14 19:01:56.000000000","message":"I am using atomic action in https://review.openstack.org/#/c/193527/21/rally/plugins/openstack/scenarios/neutron/utils.py,cm Line #343\n\nAny reason you want the atomic action here?? :)","commit_id":"6144f01151cc83d4b1272203534049750b87afb6"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"cc005c54d0b2876f75c1eadeceea3ca21788475a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        :param vip_create_args: dict, POST /lb/vips request options"},{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":110,"context_line":"        with base.AtomicAction(self, \"neutron.create_vip\"):"},{"line_number":111,"context_line":"            for net in self.context.get(\"tenant\", {}).get(\"networks\", []):"},{"line_number":112,"context_line":"                for pool in net[\"lb_pools\"]:"},{"line_number":113,"context_line":"                    self._create_v1_vip(pool, **vip_create_args)"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_82a93a26","line":110,"updated":"2015-07-23 12:45:23.000000000","message":"You actually create N vips, not single vip, so I suggest make atomic action name \"neutron.create_{N}_vips\" where N is number of vips to create","commit_id":"66663c5e00a6ff61e86924b4b57ef08f9ab53184"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"7830615d110dd0e54bf293599d1049086f3ab6bb","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        :param vip_create_args: dict, POST /lb/vips request options"},{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":110,"context_line":"        with base.AtomicAction(self, \"neutron.create_vip\"):"},{"line_number":111,"context_line":"            for net in self.context.get(\"tenant\", {}).get(\"networks\", []):"},{"line_number":112,"context_line":"                for pool in net[\"lb_pools\"]:"},{"line_number":113,"context_line":"                    self._create_v1_vip(pool, **vip_create_args)"}],"source_content_type":"text/x-python","patch_set":27,"id":"3a50d1a3_8d4aa626","line":110,"in_reply_to":"3a50d1a3_82a93a26","updated":"2015-07-24 02:56:23.000000000","message":"Please elaborate.\nDo you want me put the atomic action timer in utils so that every vip is individually timed??","commit_id":"66663c5e00a6ff61e86924b4b57ef08f9ab53184"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"88ddc4476507773c05ed753cef271fbda6f428c6","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        pool_create_args \u003d pool_create_args or {}"},{"line_number":106,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":107,"context_line":"        pools \u003d self._create_v1_pools(networks, **pool_create_args)"},{"line_number":108,"context_line":"        with base.AtomicAction(self, \"neutron.create_%s_vips\" % len(pools)):"},{"line_number":109,"context_line":"            for pool in pools:"},{"line_number":110,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":111,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_5a23c605","line":108,"updated":"2015-08-10 11:04:47.000000000","message":"why not make _create_v1_vip into atomic? why have all create as a single atomic?","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"27a4a1c6e04dd12b1272d99119b70055b2a01ff0","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        pool_create_args \u003d pool_create_args or {}"},{"line_number":106,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":107,"context_line":"        pools \u003d self._create_v1_pools(networks, **pool_create_args)"},{"line_number":108,"context_line":"        with base.AtomicAction(self, \"neutron.create_%s_vips\" % len(pools)):"},{"line_number":109,"context_line":"            for pool in pools:"},{"line_number":110,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":111,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_5dc1807f","line":108,"in_reply_to":"1a4dcd0f_5a23c605","updated":"2015-08-10 11:07:53.000000000","message":"I was asked to use it this way https://review.openstack.org/#/c/193527/21/rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py,cm","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"fea6e4a7c013dbcfd079d4266ea3a3f7d982c6f3","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        pool_create_args \u003d pool_create_args or {}"},{"line_number":106,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":107,"context_line":"        pools \u003d self._create_v1_pools(networks, **pool_create_args)"},{"line_number":108,"context_line":"        with base.AtomicAction(self, \"neutron.create_%s_vips\" % len(pools)):"},{"line_number":109,"context_line":"            for pool in pools:"},{"line_number":110,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":111,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_9d02a86e","line":108,"in_reply_to":"1a4dcd0f_5dc1807f","updated":"2015-08-10 11:16:15.000000000","message":"I might be wrong, but I think that comment was re the module and not the place in the loop. We should ask the reviewer but I believe he meant that the atomic would encompass a single command and not the whole loop","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"769d9a5a4cc0fc197dac4f7a0852ebba9fc24364","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        pool_create_args \u003d pool_create_args or {}"},{"line_number":106,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":107,"context_line":"        pools \u003d self._create_v1_pools(networks, **pool_create_args)"},{"line_number":108,"context_line":"        with base.AtomicAction(self, \"neutron.create_%s_vips\" % len(pools)):"},{"line_number":109,"context_line":"            for pool in pools:"},{"line_number":110,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"},{"line_number":111,"context_line":"        self._list_v1_vips()"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_d934bb4b","line":108,"in_reply_to":"1a4dcd0f_9d02a86e","updated":"2015-08-10 14:45:16.000000000","message":"@Yair, the idea to have N of create_v1_vip as single atomic action looks good for me, since this actually happens within 1 iteration","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"df3283d0aa00ce3ffeee62e1b1bf7116806f653c","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":105,"context_line":"        pool_create_args \u003d pool_create_args or {}"},{"line_number":106,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":107,"context_line":"        pools \u003d self._create_v1_pools(networks, **pool_create_args)"},{"line_number":108,"context_line":"        with atomic.ActionTimer(self, \"neutron.create_%s_vips\" % len(pools)):"},{"line_number":109,"context_line":"            for pool in pools:"},{"line_number":110,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"}],"source_content_type":"text/x-python","patch_set":40,"id":"da20952f_afbbc9c3","line":107,"updated":"2015-08-27 08:54:02.000000000","message":"I think atomic_action should be False here because we don\u0027t want to bench the pool creation but only vip.","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"7461b4d1f90ed5a5946e6edd3bf743a389594366","unresolved":false,"context_lines":[{"line_number":104,"context_line":"        vip_create_args \u003d vip_create_args or {}"},{"line_number":105,"context_line":"        pool_create_args \u003d pool_create_args or {}"},{"line_number":106,"context_line":"        networks \u003d self.context.get(\"tenant\", {}).get(\"networks\", [])"},{"line_number":107,"context_line":"        pools \u003d self._create_v1_pools(networks, **pool_create_args)"},{"line_number":108,"context_line":"        with atomic.ActionTimer(self, \"neutron.create_%s_vips\" % len(pools)):"},{"line_number":109,"context_line":"            for pool in pools:"},{"line_number":110,"context_line":"                self._create_v1_vip(pool, **vip_create_args)"}],"source_content_type":"text/x-python","patch_set":40,"id":"da20952f_a23de9bc","line":107,"in_reply_to":"da20952f_afbbc9c3","updated":"2015-08-28 04:54:21.000000000","message":"I was recommended to have atomic action here.","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"}],"rally/plugins/openstack/scenarios/neutron/utils.py":[{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2e2e49165acb0cc9a87bc4dca72f967cb6d1f98b","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    @base.atomic_action_timer(\"neutron.list_pools\")"},{"line_number":310,"context_line":"    def _list_v1_pools(self, **kwargs):"},{"line_number":311,"context_line":"        \"\"\"Return user lb pool list(v1).\"\"\""},{"line_number":312,"context_line":"        return self.clients(\"neutron\").list_pools()"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    @base.atomic_action_timer(\"neutron.delete_pool\")"},{"line_number":315,"context_line":"    def _delete_v1_pool(self, pool):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_72ba6025","line":312,"updated":"2015-06-30 11:21:41.000000000","message":"this slipped through the previous patch:  \n\n  list_pools(**kwargs)","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"1de10403cfe78ce9bd3806227e6a748d05ceff83","unresolved":false,"context_lines":[{"line_number":309,"context_line":"    @base.atomic_action_timer(\"neutron.list_pools\")"},{"line_number":310,"context_line":"    def _list_v1_pools(self, **kwargs):"},{"line_number":311,"context_line":"        \"\"\"Return user lb pool list(v1).\"\"\""},{"line_number":312,"context_line":"        return self.clients(\"neutron\").list_pools()"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"    @base.atomic_action_timer(\"neutron.delete_pool\")"},{"line_number":315,"context_line":"    def _delete_v1_pool(self, pool):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_3f890027","line":312,"in_reply_to":"ba3cc151_72ba6025","updated":"2015-06-30 12:34:28.000000000","message":"Done","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"2e2e49165acb0cc9a87bc4dca72f967cb6d1f98b","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":361,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":362,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":363,"context_line":"        return self.clients(\"neutron\").list_vips()"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_f2a51004","line":363,"updated":"2015-06-30 11:21:41.000000000","message":"list_vips(**kwargs)","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"1de10403cfe78ce9bd3806227e6a748d05ceff83","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":361,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":362,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":363,"context_line":"        return self.clients(\"neutron\").list_vips()"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba3cc151_5f8c0435","line":363,"in_reply_to":"ba3cc151_f2a51004","updated":"2015-06-30 12:34:28.000000000","message":"Done","commit_id":"c10cd9a35113a595ddd1c0d725a91733b5565f08"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"45d06ba0a4b9fa1771d8cea47b40570cf4cb2cfc","unresolved":false,"context_lines":[{"line_number":358,"context_line":"        return self.admin_clients(\"neutron\").create_vip({\"vip\": args})"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":361,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":362,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":363,"context_line":"        return self.clients(\"neutron\").list_vips(**kwargs)"}],"source_content_type":"text/x-python","patch_set":16,"id":"ba3cc151_7daef0e8","line":361,"updated":"2015-07-04 10:31:45.000000000","message":"Please document parameter and return value","commit_id":"0703b81a28fb283e547f3cbdf53d6cc0430af0a9"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"59b7c6091b8a9afd02b674ccecf649900809e3ae","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":356,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":357,"context_line":"        args.update(vip_create_args)"},{"line_number":358,"context_line":"        return self.admin_clients(\"neutron\").create_vip({\"vip\": args})"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":361,"context_line":"    def _list_v1_vips(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_5710ee58","line":358,"updated":"2015-07-09 02:28:48.000000000","message":"same here","commit_id":"6144f01151cc83d4b1272203534049750b87afb6"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"0f5117420a35f2ccd5a0eac9512458e9ed9374ba","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":356,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":357,"context_line":"        args.update(vip_create_args)"},{"line_number":358,"context_line":"        return self.admin_clients(\"neutron\").create_vip({\"vip\": args})"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":361,"context_line":"    def _list_v1_vips(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_87851c08","line":358,"in_reply_to":"ba3cc151_5710ee58","updated":"2015-07-14 19:01:56.000000000","message":"We need to use tenants which are not the same as the authenticated tenants. See Line#354","commit_id":"6144f01151cc83d4b1272203534049750b87afb6"},{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"59b7c6091b8a9afd02b674ccecf649900809e3ae","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":361,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":362,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":363,"context_line":"        return self.admin_clients(\"neutron\").list_vips(**kwargs)"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba3cc151_d704fe18","line":363,"updated":"2015-07-09 02:28:48.000000000","message":"same here","commit_id":"6144f01151cc83d4b1272203534049750b87afb6"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"0f5117420a35f2ccd5a0eac9512458e9ed9374ba","unresolved":false,"context_lines":[{"line_number":360,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":361,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":362,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":363,"context_line":"        return self.admin_clients(\"neutron\").list_vips(**kwargs)"}],"source_content_type":"text/x-python","patch_set":21,"id":"9a41bdd9_4795d43c","line":363,"in_reply_to":"ba3cc151_d704fe18","updated":"2015-07-14 19:01:56.000000000","message":"Here I believe it is necessary because vips are created with admin_clients and thus listing it with non-admin would have no effect.","commit_id":"6144f01151cc83d4b1272203534049750b87afb6"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"dbf7b5320553118a8f2cf6311fd4f665bddc6669","unresolved":false,"context_lines":[{"line_number":325,"context_line":"    @base.atomic_action_timer(\"neutron.list_pools\")"},{"line_number":326,"context_line":"    def _list_v1_pools(self, **kwargs):"},{"line_number":327,"context_line":"        \"\"\"Return user lb pool list(v1).\"\"\""},{"line_number":328,"context_line":"        return self.clients(\"neutron\").list_pools(**kwargs)"},{"line_number":329,"context_line":""},{"line_number":330,"context_line":"    @base.atomic_action_timer(\"neutron.delete_pool\")"},{"line_number":331,"context_line":"    def _delete_v1_pool(self, pool):"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_7f9302fb","line":328,"updated":"2015-08-10 15:35:01.000000000","message":"This change does not related to this patch, so I recommend to at least add a note to commit message:\n\n * fix usage of kwargs in scenarios.neutron.utils.NeutronScenario._list_v1_pools\n\nAnother approach is moving this fix to separate patch","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"773aba3fc6bc63d7e37cc8a8a143542a3340f00c","unresolved":false,"context_lines":[{"line_number":353,"context_line":"        \"\"\"Create VIP(v1)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        :parm pool: dict, neutron lb-pool"},{"line_number":356,"context_line":"        :parm vip_create_args: dict, POST /lb/vips request options"},{"line_number":357,"context_line":"        :returns: obj, neutron lb vip"},{"line_number":358,"context_line":"        \"\"\""},{"line_number":359,"context_line":"        args \u003d {\"protocol\": self.LB_PROTOCOL,"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_2d4a3984","line":356,"updated":"2015-08-10 14:49:16.000000000","message":"`**\u0027 means that is not a dict but arbitrary key-value arguments. However I recommend using dict here, not **-kwargs:\n\n def _create_v1_vip(self, pool, vip_create_args\u003dNone):\n   \"\"\"...\"\"\"\n   vip_create_args \u003d vip_create_args or {}\n   ...","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"88ddc4476507773c05ed753cef271fbda6f428c6","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        args \u003d {\"protocol\": self.LB_PROTOCOL,"},{"line_number":360,"context_line":"                \"protocol_port\": self.LB_PROTOCOL_PORT,"},{"line_number":361,"context_line":"                \"name\": self._generate_random_name(\"rally_vip_\"),"},{"line_number":362,"context_line":"                \"tenant_id\": pool[\"pool\"][\"tenant_id\"],"},{"line_number":363,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":364,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":365,"context_line":"        args.update(vip_create_args)"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_fd1c0c6c","line":362,"updated":"2015-08-10 11:04:47.000000000","message":"you shouldn\u0027t use tenant-id. that\u0027s for pushing a resource (as admin) to another tenant. these ops should be done within the tenant provided by the \"users\" ctx","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"88ddc4476507773c05ed753cef271fbda6f428c6","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":364,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":365,"context_line":"        args.update(vip_create_args)"},{"line_number":366,"context_line":"        return self.admin_clients(\"neutron\").create_vip({\"vip\": args})"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":369,"context_line":"    def _list_v1_vips(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_babbea74","line":366,"updated":"2015-08-10 11:04:47.000000000","message":"why use admin client?\nAssuming you have a valid reason, this should be doc\u0027ed","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":6835,"name":"Kun Huang","email":"gareth@openstacker.org","username":"academicgareth"},"change_message_id":"74a10c2ba16966ab4405a88d6a67b9d2965e4c31","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":369,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":370,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":371,"context_line":"        return self.admin_clients(\"neutron\").list_vips(**kwargs)"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_7acec75b","line":371,"updated":"2015-08-10 09:30:03.000000000","message":"one question, is it necessary to use admin_clients? not self.clients?","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"2efb2dcc10834d45033f86727c2cacde0bec290a","unresolved":false,"context_lines":[{"line_number":368,"context_line":"    @base.atomic_action_timer(\"neutron.list_vips\")"},{"line_number":369,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":370,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":371,"context_line":"        return self.admin_clients(\"neutron\").list_vips(**kwargs)"}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_eb868b64","line":371,"in_reply_to":"1a4dcd0f_7acec75b","updated":"2015-08-10 10:12:39.000000000","message":"Using clients may not list all vips because vips are created using admin_clients.","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"4c75692a572fcfdd2f4ac442ac488a9330df917a","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        body \u003d {\"pool\": pool_update_args}"},{"line_number":350,"context_line":"        return self.clients(\"neutron\").update_pool(pool[\"pool\"][\"id\"], body)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def _create_v1_vip(self, pool, **vip_create_args):"},{"line_number":353,"context_line":"        \"\"\"Create VIP(v1)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        :parm pool: dict, neutron lb-pool"}],"source_content_type":"text/x-python","patch_set":34,"id":"fa1b9901_062bd734","line":352,"updated":"2015-08-21 21:53:11.000000000","message":"If this is the utils function that create vip then it must to have ability  to be measured as atomic. I\u0027d prefer to write here like in murano utils https://github.com/openstack/rally/blob/master/rally/plugins/openstack/scenarios/murano/utils.py#L103 Just add one more parameter that decide whether this function atomic or not.","commit_id":"3b68994bc15fb98d6b909cde6bcb0e3bb3ef2a50"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"773afd6dc5a63c7f8b08780bef2729a7580dd72c","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        body \u003d {\"pool\": pool_update_args}"},{"line_number":350,"context_line":"        return self.clients(\"neutron\").update_pool(pool[\"pool\"][\"id\"], body)"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    def _create_v1_vip(self, pool, **vip_create_args):"},{"line_number":353,"context_line":"        \"\"\"Create VIP(v1)"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        :parm pool: dict, neutron lb-pool"}],"source_content_type":"text/x-python","patch_set":34,"id":"fa1b9901_1fcb0b74","line":352,"in_reply_to":"fa1b9901_062bd734","updated":"2015-08-23 03:54:31.000000000","message":"We do not need this feature in the current patches. We will make it when it is necessary.","commit_id":"3b68994bc15fb98d6b909cde6bcb0e3bb3ef2a50"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"4c75692a572fcfdd2f4ac442ac488a9330df917a","unresolved":false,"context_lines":[{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    @atomic.action_timer(\"neutron.list_vips\")"},{"line_number":369,"context_line":"    def _list_v1_vips(self, **kwargs):"},{"line_number":370,"context_line":"        \"\"\"Return user lb vip list(v1).\"\"\""},{"line_number":371,"context_line":"        return self.clients(\"neutron\").list_vips(**kwargs)"}],"source_content_type":"text/x-python","patch_set":34,"id":"fa1b9901_4619cf21","line":370,"updated":"2015-08-21 21:53:11.000000000","message":"please, parameters and return value must be documented","commit_id":"3b68994bc15fb98d6b909cde6bcb0e3bb3ef2a50"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"a0398757f44370a60c7492e4735573c19107ee77","unresolved":false,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        :parm pool: dict, neutron lb-pool"},{"line_number":356,"context_line":"        :parm vip_create_args: dict, POST /lb/vips request options"},{"line_number":357,"context_line":"        :returns: obj, neutron lb vip"},{"line_number":358,"context_line":"        \"\"\""},{"line_number":359,"context_line":"        args \u003d {\"protocol\": self.LB_PROTOCOL,"},{"line_number":360,"context_line":"                \"protocol_port\": self.LB_PROTOCOL_PORT,"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_86289034","line":357,"updated":"2015-08-31 15:04:11.000000000","message":"This is probably dict, not obj","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"f2abd0c0426ac10e3f4401ba86e583d1051e6288","unresolved":false,"context_lines":[{"line_number":354,"context_line":""},{"line_number":355,"context_line":"        :parm pool: dict, neutron lb-pool"},{"line_number":356,"context_line":"        :parm vip_create_args: dict, POST /lb/vips request options"},{"line_number":357,"context_line":"        :returns: obj, neutron lb vip"},{"line_number":358,"context_line":"        \"\"\""},{"line_number":359,"context_line":"        args \u003d {\"protocol\": self.LB_PROTOCOL,"},{"line_number":360,"context_line":"                \"protocol_port\": self.LB_PROTOCOL_PORT,"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_43020040","line":357,"in_reply_to":"da20952f_86289034","updated":"2015-09-02 09:31:35.000000000","message":"Done","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"},{"author":{"_account_id":8576,"name":"Yair Fried","email":"yfried@redhat.com","username":"yfried"},"change_message_id":"13b1ee7bdc780029a9f7016496cbc5f5522a3103","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        args \u003d {\"protocol\": self.LB_PROTOCOL,"},{"line_number":360,"context_line":"                \"protocol_port\": self.LB_PROTOCOL_PORT,"},{"line_number":361,"context_line":"                \"name\": self._generate_random_name(\"rally_vip_\"),"},{"line_number":362,"context_line":"                \"tenant_id\": pool[\"pool\"][\"tenant_id\"],"},{"line_number":363,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":364,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":365,"context_line":"        args.update(vip_create_args)"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_116cc4cc","line":362,"updated":"2015-08-31 12:18:11.000000000","message":"copy from old patch: you shouldn\u0027t use tenant-id. that\u0027s for pushing a resource (as admin) to another tenant. these ops should be done within the tenant provided by the \"users\" ctx\n￼","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"f2abd0c0426ac10e3f4401ba86e583d1051e6288","unresolved":false,"context_lines":[{"line_number":359,"context_line":"        args \u003d {\"protocol\": self.LB_PROTOCOL,"},{"line_number":360,"context_line":"                \"protocol_port\": self.LB_PROTOCOL_PORT,"},{"line_number":361,"context_line":"                \"name\": self._generate_random_name(\"rally_vip_\"),"},{"line_number":362,"context_line":"                \"tenant_id\": pool[\"pool\"][\"tenant_id\"],"},{"line_number":363,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":364,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":365,"context_line":"        args.update(vip_create_args)"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_63ff0435","line":362,"in_reply_to":"da20952f_116cc4cc","updated":"2015-09-02 09:31:35.000000000","message":"Done. \nI didnt mean to ignore this. Sorry.","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"a0398757f44370a60c7492e4735573c19107ee77","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                \"tenant_id\": pool[\"pool\"][\"tenant_id\"],"},{"line_number":363,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":364,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":365,"context_line":"        args.update(vip_create_args)"},{"line_number":366,"context_line":"        return self.clients(\"neutron\").create_vip({\"vip\": args})"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    @atomic.action_timer(\"neutron.list_vips\")"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_a60834db","line":365,"updated":"2015-08-31 15:04:11.000000000","message":"What if vip_create_args have keys \"pool_id\", \"subnet_id\" or \"tenant_id\" or \"name\"? I guess that some values can not be updated.\n\nI suggest another logic:\n\n vip_create_args.update({... here set some parameters explicitly ...})\n vip_create_args.setdefault(...here we can set some default...)\n return self.clients(\"neutron\").create_vip({\"vip\": vip_create_args})","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"cf3808a0ce3109babb8ca65131830c5f50c6702d","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                \"tenant_id\": pool[\"pool\"][\"tenant_id\"],"},{"line_number":363,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":364,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":365,"context_line":"        args.update(vip_create_args)"},{"line_number":366,"context_line":"        return self.clients(\"neutron\").create_vip({\"vip\": args})"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    @atomic.action_timer(\"neutron.list_vips\")"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_184a6a55","line":365,"in_reply_to":"da20952f_a60834db","updated":"2015-09-01 12:41:19.000000000","message":"Makes sense.","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"f2abd0c0426ac10e3f4401ba86e583d1051e6288","unresolved":false,"context_lines":[{"line_number":362,"context_line":"                \"tenant_id\": pool[\"pool\"][\"tenant_id\"],"},{"line_number":363,"context_line":"                \"pool_id\": pool[\"pool\"][\"id\"],"},{"line_number":364,"context_line":"                \"subnet_id\": pool[\"pool\"][\"subnet_id\"]}"},{"line_number":365,"context_line":"        args.update(vip_create_args)"},{"line_number":366,"context_line":"        return self.clients(\"neutron\").create_vip({\"vip\": args})"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    @atomic.action_timer(\"neutron.list_vips\")"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_83e7b8ab","line":365,"in_reply_to":"da20952f_a60834db","updated":"2015-09-02 09:31:35.000000000","message":"https://review.openstack.org/#/c/193527/41/rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py,cm Line #87 I have used restricted parameters to avoid explicit subnet id and tenant id specification.","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"}],"samples/tasks/scenarios/neutron/create_and_list_vips.json":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"031be263f71dd4bd51a14243d726d2ae1be6279f","unresolved":false,"context_lines":[{"line_number":12,"context_line":"            \"context\": {"},{"line_number":13,"context_line":"                \"users\": {"},{"line_number":14,"context_line":"                    \"tenants\": 5,"},{"line_number":15,"context_line":"                    \"users_per_tenant\": 1"},{"line_number":16,"context_line":"                },"},{"line_number":17,"context_line":"                \"network\":{},"},{"line_number":18,"context_line":"                \"lbaas\":{},"}],"source_content_type":"application/json","patch_set":32,"id":"1a4dcd0f_1f151e48","line":15,"updated":"2015-08-10 16:10:46.000000000","message":"You have 100 iterations and only 5 users, so I would recommend to create more users - put at least `2\u0027 here","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"df3283d0aa00ce3ffeee62e1b1bf7116806f653c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"                    \"users_per_tenant\": 1"},{"line_number":16,"context_line":"                },"},{"line_number":17,"context_line":"                \"network\":{},"},{"line_number":18,"context_line":"                \"lbaas\":{},"},{"line_number":19,"context_line":"                \"quotas\": {"},{"line_number":20,"context_line":"                    \"neutron\": {"},{"line_number":21,"context_line":"                        \"network\": -1,"}],"source_content_type":"application/json","patch_set":40,"id":"da20952f_afe2e9d3","line":18,"updated":"2015-08-27 08:54:02.000000000","message":"Don\u0027t need the context here (bis)","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"}],"samples/tasks/scenarios/neutron/create_and_list_vips.yaml":[{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"df3283d0aa00ce3ffeee62e1b1bf7116806f653c","unresolved":false,"context_lines":[{"line_number":12,"context_line":"          tenants: 5"},{"line_number":13,"context_line":"          users_per_tenant: 1"},{"line_number":14,"context_line":"        network: {}"},{"line_number":15,"context_line":"        lbaas: {}"},{"line_number":16,"context_line":"        quotas:"},{"line_number":17,"context_line":"          neutron:"},{"line_number":18,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":40,"id":"da20952f_cfdb9d1a","line":15,"updated":"2015-08-27 08:54:02.000000000","message":"Don\u0027t need the context here (same)","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"}],"tests/unit/plugins/openstack/scenarios/neutron/test_loadbalancer_v1.py":[{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"df3283d0aa00ce3ffeee62e1b1bf7116806f653c","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            }"},{"line_number":147,"context_line":"        }]"},{"line_number":148,"context_line":"        vip_data \u003d vip_create_args or {}"},{"line_number":149,"context_line":"        pool_data \u003d pool_create_args or {}"},{"line_number":150,"context_line":"        networks \u003d self._get_context()[\"tenant\"][\"networks\"]"},{"line_number":151,"context_line":"        neutron_scenario._create_v1_pools \u003d mock.Mock(return_value\u003dpools)"},{"line_number":152,"context_line":"        neutron_scenario._create_v1_vip \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":40,"id":"da20952f_eac52f5b","line":149,"updated":"2015-08-27 08:54:02.000000000","message":"Why are you changing the variable name ?\nI think pool_create_args \u003d pool_create_args or {} would be better. Same for vip args.","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"7461b4d1f90ed5a5946e6edd3bf743a389594366","unresolved":false,"context_lines":[{"line_number":146,"context_line":"            }"},{"line_number":147,"context_line":"        }]"},{"line_number":148,"context_line":"        vip_data \u003d vip_create_args or {}"},{"line_number":149,"context_line":"        pool_data \u003d pool_create_args or {}"},{"line_number":150,"context_line":"        networks \u003d self._get_context()[\"tenant\"][\"networks\"]"},{"line_number":151,"context_line":"        neutron_scenario._create_v1_pools \u003d mock.Mock(return_value\u003dpools)"},{"line_number":152,"context_line":"        neutron_scenario._create_v1_vip \u003d mock.Mock()"}],"source_content_type":"text/x-python","patch_set":40,"id":"da20952f_8297858f","line":149,"in_reply_to":"da20952f_eac52f5b","updated":"2015-08-28 04:54:21.000000000","message":"pool_data is to assert utils functions. While pool_create_args is passed as it is to scenario.","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"},{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"df3283d0aa00ce3ffeee62e1b1bf7116806f653c","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            networks, **pool_data)"},{"line_number":158,"context_line":"        for pool in pools:"},{"line_number":159,"context_line":"            neutron_scenario._create_v1_vip.assert_called_once_with("},{"line_number":160,"context_line":"                pool, **vip_data)"},{"line_number":161,"context_line":"        neutron_scenario._list_v1_vips.assert_called_once_with()"}],"source_content_type":"text/x-python","patch_set":40,"id":"da20952f_aa941737","line":160,"updated":"2015-08-27 08:54:02.000000000","message":"It might be better to test the list of calls with assert_has_calls","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"7461b4d1f90ed5a5946e6edd3bf743a389594366","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            networks, **pool_data)"},{"line_number":158,"context_line":"        for pool in pools:"},{"line_number":159,"context_line":"            neutron_scenario._create_v1_vip.assert_called_once_with("},{"line_number":160,"context_line":"                pool, **vip_data)"},{"line_number":161,"context_line":"        neutron_scenario._list_v1_vips.assert_called_once_with()"}],"source_content_type":"text/x-python","patch_set":40,"id":"da20952f_a2d96985","line":160,"in_reply_to":"da20952f_aa941737","updated":"2015-08-28 04:54:21.000000000","message":"Done","commit_id":"6a4c5203ad45c76745f97706489a1a3bcc713e9c"}],"tests/unit/plugins/openstack/scenarios/neutron/test_utils.py":[{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"52413b8fdb38e29f054f1b64d09b3a40a70dde79","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        args \u003d {\"protocol_port\": protocol_port, \"protocol\": protocol,"},{"line_number":499,"context_line":"                \"name\": \"random_name\", \"subnet_id\": subnet,"},{"line_number":500,"context_line":"                \"tenant_id\": tenant, \"pool_id\": pool_id}"},{"line_number":501,"context_line":"        args.update(vip_data)"},{"line_number":502,"context_line":"        expected_vip_data \u003d {\"vip\": args}"},{"line_number":503,"context_line":"        vip \u003d neutron_scenario._create_v1_vip(pool, **vip_data)"},{"line_number":504,"context_line":"        self.admin_clients(\"neutron\").create_vip.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":29,"id":"1a4dcd0f_4d8a7765","line":501,"updated":"2015-08-07 13:48:13.000000000","message":"Why don\u0027t just set \u0027args\u0027 to what we need without updating it?","commit_id":"b97eb7ee078064d995bd6646ddbc82246bb85046"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"a48dfc0f7684e6782af407771090b7a04723c016","unresolved":false,"context_lines":[{"line_number":498,"context_line":"        args \u003d {\"protocol_port\": protocol_port, \"protocol\": protocol,"},{"line_number":499,"context_line":"                \"name\": \"random_name\", \"subnet_id\": subnet,"},{"line_number":500,"context_line":"                \"tenant_id\": tenant, \"pool_id\": pool_id}"},{"line_number":501,"context_line":"        args.update(vip_data)"},{"line_number":502,"context_line":"        expected_vip_data \u003d {\"vip\": args}"},{"line_number":503,"context_line":"        vip \u003d neutron_scenario._create_v1_vip(pool, **vip_data)"},{"line_number":504,"context_line":"        self.admin_clients(\"neutron\").create_vip.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":29,"id":"1a4dcd0f_67c2e786","line":501,"in_reply_to":"1a4dcd0f_4d8a7765","updated":"2015-08-07 17:02:08.000000000","message":"1) vip_data is the args given by the user\n2) args is the updated arguments dict created to fulfill the API requirements.\nAnd both are needed in the testcase.","commit_id":"b97eb7ee078064d995bd6646ddbc82246bb85046"},{"author":{"_account_id":8491,"name":"Illia Khudoshyn","email":"ikhudoshyn@mirantis.com","username":"ikhudoshyn"},"change_message_id":"52413b8fdb38e29f054f1b64d09b3a40a70dde79","unresolved":false,"context_lines":[{"line_number":528,"context_line":"        args \u003d {\"protocol_port\": protocol_port, \"protocol\": protocol,"},{"line_number":529,"context_line":"                \"pool_id\": pool_id, \"name\": \"random_name\","},{"line_number":530,"context_line":"                \"subnet_id\": subnet, \"tenant_id\": tenant}"},{"line_number":531,"context_line":"        args.update(vip_data)"},{"line_number":532,"context_line":"        expected_vip_data \u003d {\"vip\": args}"},{"line_number":533,"context_line":"        vip \u003d neutron_scenario._create_v1_vip(pool, **vip_data)"},{"line_number":534,"context_line":"        self.admin_clients(\"neutron\").create_vip.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":29,"id":"1a4dcd0f_8dc2bf83","line":531,"updated":"2015-08-07 13:48:13.000000000","message":"The same as above","commit_id":"b97eb7ee078064d995bd6646ddbc82246bb85046"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"031be263f71dd4bd51a14243d726d2ae1be6279f","unresolved":false,"context_lines":[{"line_number":506,"context_line":"            expected_vip_create_args)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    @mock.patch(NEUTRON_UTILS + \"NeutronScenario._generate_random_name\")"},{"line_number":509,"context_line":"    def test_create_v1_vip_default(self, mock__generate_random_name):"},{"line_number":510,"context_line":"        neutron_scenario \u003d utils.NeutronScenario()"},{"line_number":511,"context_line":"        random_name \u003d \"random_name\""},{"line_number":512,"context_line":"        protocol \u003d \"HTTP\""}],"source_content_type":"text/x-python","patch_set":32,"id":"1a4dcd0f_305a892b","line":509,"updated":"2015-08-10 16:10:46.000000000","message":"(just recommendation) both tests - this one and test_create_v1_vip_explicit above - can be merged to single one with usage of ddt","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"b05a9852aa540de48c6353c632590aef9964f311","unresolved":false,"context_lines":[{"line_number":506,"context_line":"            expected_vip_create_args)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    @mock.patch(NEUTRON_UTILS + \"NeutronScenario._generate_random_name\")"},{"line_number":509,"context_line":"    def test_create_v1_vip_default(self, mock__generate_random_name):"},{"line_number":510,"context_line":"        neutron_scenario \u003d utils.NeutronScenario()"},{"line_number":511,"context_line":"        random_name \u003d \"random_name\""},{"line_number":512,"context_line":"        protocol \u003d \"HTTP\""}],"source_content_type":"text/x-python","patch_set":32,"id":"fa1b9901_d351b9d9","line":509,"in_reply_to":"1a4dcd0f_305a892b","updated":"2015-08-21 12:52:48.000000000","message":"Done","commit_id":"d0e6da14e936e5502e74bb23744984f3f4105355"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"a0398757f44370a60c7492e4735573c19107ee77","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":477,"context_line":"                                       \"neutron.list_pools\")"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def test_create_v1_vip_explicit(self):"},{"line_number":480,"context_line":"        neutron_scenario \u003d utils.NeutronScenario()"},{"line_number":481,"context_line":"        protocol \u003d \"HTTPS\""},{"line_number":482,"context_line":"        protocol_port \u003d 443"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_bd028208","line":479,"updated":"2015-08-31 15:04:11.000000000","message":"This test and another one below can be re-implemented with DDT - this will make this test case more flexible and save LOC","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"f2abd0c0426ac10e3f4401ba86e583d1051e6288","unresolved":false,"context_lines":[{"line_number":476,"context_line":"        self._test_atomic_action_timer(scenario.atomic_actions(),"},{"line_number":477,"context_line":"                                       \"neutron.list_pools\")"},{"line_number":478,"context_line":""},{"line_number":479,"context_line":"    def test_create_v1_vip_explicit(self):"},{"line_number":480,"context_line":"        neutron_scenario \u003d utils.NeutronScenario()"},{"line_number":481,"context_line":"        protocol \u003d \"HTTPS\""},{"line_number":482,"context_line":"        protocol_port \u003d 443"}],"source_content_type":"text/x-python","patch_set":41,"id":"da20952f_a3bafc6c","line":479,"in_reply_to":"da20952f_bd028208","updated":"2015-09-02 09:31:35.000000000","message":"Done","commit_id":"310d34e4957837d4a073db8cad449a049accddc9"}]}
