)]}'
{"rally-jobs/rally-neutron.yaml":[{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"fda4ff633430611cab1be1ca4a46c7a6c40a2388","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        network: {}"},{"line_number":230,"context_line":"        lbaas:"},{"line_number":231,"context_line":"          pool: {}"},{"line_number":232,"context_line":"          lbaas_version: 1"},{"line_number":233,"context_line":"        quotas:"},{"line_number":234,"context_line":"          neutron:"},{"line_number":235,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"da20952f_612b85ec","line":232,"updated":"2015-08-27 09:41:03.000000000","message":"Context not needed since your create pools in the scenario itself","commit_id":"7328593c2b2c709af1286af53e4620d1f461c2d6"}],"rally/plugins/openstack/scenarios/neutron/loadbalancer_v1.py":[{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"159507636d4ab2f6c47685098794a03b8a16f9a4","unresolved":false,"context_lines":[{"line_number":129,"context_line":"            self._delete_v1_vip(vip[\"vip\"])"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    @validation.restricted_parameters(\"subnet_id\", subdict\u003d\"vip_create_args\")"},{"line_number":132,"context_line":"    @validation.restricted_parameters(\"pool_id\", subdict\u003d\"vip_create_args\")"},{"line_number":133,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":134,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":135,"context_line":"    @validation.required_contexts(\"network\")"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_b8fe9136","line":132,"updated":"2015-06-30 09:10:04.000000000","message":"Use @validation.restricted_parameters([\"subnet_id\", \"pool_id\"], subdict\u003d\"vip_create_args\") instead.","commit_id":"243e19a06152e607ae8641dd103ea3718a93e82f"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"d7a1f5d231da30fccd57e2813e531e8533a9c6f0","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    @validation.restricted_parameters([\"pool_id\", \"subnet_id\"],"},{"line_number":139,"context_line":"                                      subdict\u003d\"vip_create_args\")"},{"line_number":140,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":141,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":142,"context_line":"    @validation.required_contexts(\"network\")"},{"line_number":143,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"neutron\"]})"},{"line_number":144,"context_line":"    def create_and_update_vips(self, vip_update_args\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_3de62845","line":141,"updated":"2015-07-04 10:38:05.000000000","message":"You request user only but use _update_v1_vip that uses admin client","commit_id":"1fa8cc03ccccbc3c544ebb9b1c98b6d563ea17bf"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"9d61e0b2585d3bf21d1147a3cf9ac392f822424c","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    @validation.restricted_parameters([\"pool_id\", \"subnet_id\"],"},{"line_number":139,"context_line":"                                      subdict\u003d\"vip_create_args\")"},{"line_number":140,"context_line":"    @validation.required_services(consts.Service.NEUTRON)"},{"line_number":141,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":142,"context_line":"    @validation.required_contexts(\"network\")"},{"line_number":143,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"neutron\"]})"},{"line_number":144,"context_line":"    def create_and_update_vips(self, vip_update_args\u003dNone,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_d9daa4e9","line":141,"in_reply_to":"ba3cc151_3de62845","updated":"2015-08-08 18:09:54.000000000","message":"@Roman I use admin_clients because the context has created pools under different tenants and in scenario we try to use pools of unauthenticated tenants it gave an error saying \"pool not found\", thus I am forced to use admin_clients to make all pools visible. \n\nIt would be nice if you could help me solve this problem. :)","commit_id":"1fa8cc03ccccbc3c544ebb9b1c98b6d563ea17bf"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"d7a1f5d231da30fccd57e2813e531e8533a9c6f0","unresolved":false,"context_lines":[{"line_number":159,"context_line":"            for pool in net[\"lb_pools\"]:"},{"line_number":160,"context_line":"                vips.append(self._create_v1_vip(pool, **vip_create_args))"},{"line_number":161,"context_line":"        for vip in vips:"},{"line_number":162,"context_line":"            self._update_v1_vip(vip, **vip_update_args)"}],"source_content_type":"text/x-python","patch_set":2,"id":"ba3cc151_bdf1d803","line":162,"updated":"2015-07-04 10:38:05.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":"1fa8cc03ccccbc3c544ebb9b1c98b6d563ea17bf"}],"rally/plugins/openstack/scenarios/neutron/utils.py":[{"author":{"_account_id":4428,"name":"Liyingjun","email":"yinjalee@163.com","username":"liyingjun"},"change_message_id":"159507636d4ab2f6c47685098794a03b8a16f9a4","unresolved":false,"context_lines":[{"line_number":374,"context_line":"    def _update_v1_vip(self, vip, **vip_update_args):"},{"line_number":375,"context_line":"        \"\"\"Update vip."},{"line_number":376,"context_line":""},{"line_number":377,"context_line":"        This atomic function updates pool name by"},{"line_number":378,"context_line":"        appending the existing name and admin state with vip_update_args."},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        :param vip: Vip object"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_b8ac5136","line":377,"updated":"2015-06-30 09:10:04.000000000","message":"updates vip name and admin state","commit_id":"243e19a06152e607ae8641dd103ea3718a93e82f"},{"author":{"_account_id":8840,"name":"Carlos L. Torres","email":"carlos.torres@rackspace.com","username":"carl6796"},"change_message_id":"4a55307f8e12721adc2083862c6fd424d99594f0","unresolved":false,"context_lines":[{"line_number":385,"context_line":"        body \u003d {"},{"line_number":386,"context_line":"            \"vip\": {"},{"line_number":387,"context_line":"                \"name\": vip[\"vip\"][\"name\"] + suffix if suffix is not None"},{"line_number":388,"context_line":"                else self._generate_random_name(\"_\"),"},{"line_number":389,"context_line":"                \"admin_state_up\": vip_update_args.get(\"admin_state_up\", True)"},{"line_number":390,"context_line":"            }"},{"line_number":391,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa32b979_55407c35","line":388,"updated":"2015-06-26 17:56:53.000000000","message":"Just a suggestion, I think it will help with readability if we extract the\n\n   suffix if suffix is not None else self._generate_random_name(\"_\")\n\nto its own local variable, below the suffix definition.","commit_id":"243e19a06152e607ae8641dd103ea3718a93e82f"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"2dfba9a9380c1ba12ae82da0ba31b25c3a49f31a","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    LB_PROTOCOL \u003d \"HTTP\""},{"line_number":34,"context_line":"    LB_PROTOCOL_PORT \u003d 80"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _warn_about_deprecated_name_kwarg(self, resource, kwargs):"},{"line_number":37,"context_line":"        \"\"\"Warn about use of a deprecated \u0027name\u0027 kwarg and replace it."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        Many of the functions in this class previously accepted a"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_a1cd2888","line":36,"updated":"2015-08-08 08:17:59.000000000","message":"You don\u0027t need to create separate function for this. https://github.com/openstack/rally/blob/master/rally/common/utils.py#L203 We have function for that.","commit_id":"040843d55a93f7f4c9e72b95312f7b4ac3a6771a"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"96088a31cb4af2fb42d5d1221eac799fa77ed0e9","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    LB_PROTOCOL \u003d \"HTTP\""},{"line_number":34,"context_line":"    LB_PROTOCOL_PORT \u003d 80"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _warn_about_deprecated_name_kwarg(self, resource, kwargs):"},{"line_number":37,"context_line":"        \"\"\"Warn about use of a deprecated \u0027name\u0027 kwarg and replace it."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        Many of the functions in this class previously accepted a"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_395e2877","line":36,"in_reply_to":"1a4dcd0f_595f7475","updated":"2015-08-08 18:01:47.000000000","message":"Meaning, this function is not added by me.","commit_id":"040843d55a93f7f4c9e72b95312f7b4ac3a6771a"},{"author":{"_account_id":14884,"name":"Kiran Ranganath","email":"kiran7193@gmail.com","username":"kiran"},"change_message_id":"4bc07c96b7a21e34d89e57b06550755c2064bc9c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    LB_PROTOCOL \u003d \"HTTP\""},{"line_number":34,"context_line":"    LB_PROTOCOL_PORT \u003d 80"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    def _warn_about_deprecated_name_kwarg(self, resource, kwargs):"},{"line_number":37,"context_line":"        \"\"\"Warn about use of a deprecated \u0027name\u0027 kwarg and replace it."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        Many of the functions in this class previously accepted a"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_595f7475","line":36,"in_reply_to":"1a4dcd0f_a1cd2888","updated":"2015-08-08 18:01:05.000000000","message":"@Roman This is not my code. :)","commit_id":"040843d55a93f7f4c9e72b95312f7b4ac3a6771a"},{"author":{"_account_id":8122,"name":"Cyril Roelandt","email":"cyril@redhat.com","username":"cyril.roelandt.enovance"},"change_message_id":"9035459e042fd6d797ef01f8ed4025e570c83a6c","unresolved":false,"context_lines":[{"line_number":379,"context_line":"        self.clients(\"neutron\").delete_vip(vip[\"id\"])"},{"line_number":380,"context_line":""},{"line_number":381,"context_line":"    @atomic.action_timer(\"neutron.update_vip\")"},{"line_number":382,"context_line":"    def _update_v1_vip(self, vip, **vip_update_args):"},{"line_number":383,"context_line":"        \"\"\"Updates vip."},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        This atomic function updates vip name and admin state"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_683e2b2b","line":382,"updated":"2015-09-01 15:17:24.000000000","message":"So, in this method, \"vip\" is \"{\u0027vip\u0027: somestuff}\", while in _delete_v1_vip, \"vip\" is \"somestuff\". See what I mean? \n\nThis is not consistent, and is especially an issue since Python does not have a decent type system. Could we have a unified naming convention, at least for the vip-related methods?","commit_id":"e7d934701bc425dc222acfc8eca92ee15e8079b1"}],"samples/tasks/scenarios/neutron/create_and_update_vips.json":[{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"fda4ff633430611cab1be1ca4a46c7a6c40a2388","unresolved":false,"context_lines":[{"line_number":19,"context_line":"                \"lbaas\": {"},{"line_number":20,"context_line":"                    \"pool\": {},"},{"line_number":21,"context_line":"                    \"lbaas_version\": 1"},{"line_number":22,"context_line":"                },"},{"line_number":23,"context_line":"                \"quotas\": {"},{"line_number":24,"context_line":"                    \"neutron\": {"},{"line_number":25,"context_line":"                        \"network\": -1,"}],"source_content_type":"application/json","patch_set":8,"id":"da20952f_c17e11ae","line":22,"updated":"2015-08-27 09:41:03.000000000","message":"Context not needed","commit_id":"7328593c2b2c709af1286af53e4620d1f461c2d6"}],"samples/tasks/scenarios/neutron/create_and_update_vips.yaml":[{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"fda4ff633430611cab1be1ca4a46c7a6c40a2388","unresolved":false,"context_lines":[{"line_number":15,"context_line":"        network: {}"},{"line_number":16,"context_line":"        lbaas:"},{"line_number":17,"context_line":"          pool: {}"},{"line_number":18,"context_line":"          lbaas_version: 1"},{"line_number":19,"context_line":"        quotas:"},{"line_number":20,"context_line":"          neutron:"},{"line_number":21,"context_line":"            network: -1"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"da20952f_015c094a","line":18,"updated":"2015-08-27 09:41:03.000000000","message":"Context not needed","commit_id":"7328593c2b2c709af1286af53e4620d1f461c2d6"}],"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":"fda4ff633430611cab1be1ca4a46c7a6c40a2388","unresolved":false,"context_lines":[{"line_number":238,"context_line":"            networks, **pool_create_args)"},{"line_number":239,"context_line":"        for pool in pools:"},{"line_number":240,"context_line":"            neutron_scenario._create_v1_vip.assert_called_once_with("},{"line_number":241,"context_line":"                pool, **vip_create_args)"},{"line_number":242,"context_line":"        for vip in vips:"},{"line_number":243,"context_line":"            neutron_scenario._update_v1_vip.assert_called_once_with("},{"line_number":244,"context_line":"                vip, **vip_update_args)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_c103710e","line":241,"updated":"2015-08-27 09:41:03.000000000","message":"assert_calls might be clearer","commit_id":"7328593c2b2c709af1286af53e4620d1f461c2d6"},{"author":{"_account_id":16958,"name":"Jean-Philippe Braun","email":"jean-philippe.braun@cloudwatt.com","username":"eon"},"change_message_id":"fda4ff633430611cab1be1ca4a46c7a6c40a2388","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                pool, **vip_create_args)"},{"line_number":242,"context_line":"        for vip in vips:"},{"line_number":243,"context_line":"            neutron_scenario._update_v1_vip.assert_called_once_with("},{"line_number":244,"context_line":"                vip, **vip_update_args)"}],"source_content_type":"text/x-python","patch_set":8,"id":"da20952f_b41a3d6d","line":244,"updated":"2015-08-27 09:41:03.000000000","message":"assert_calls might be clearer","commit_id":"7328593c2b2c709af1286af53e4620d1f461c2d6"}]}
