)]}'
{"rally-jobs/rally.yaml":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"c225b60624f3829c4946a72b178dc726ee4f8a1f","unresolved":false,"context_lines":[{"line_number":1552,"context_line":"        users:"},{"line_number":1553,"context_line":"          tenants: 3"},{"line_number":1554,"context_line":"          users_per_tenant: 2"},{"line_number":1555,"context_line":"      sla:"},{"line_number":1556,"context_line":"        failure_rate:"},{"line_number":1557,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"dac4157f_3f7ef4e4","line":1555,"updated":"2015-04-20 13:24:56.000000000","message":"this \"sla\" section was related to HeadStacks.list_stacks_and_events scenario and now list_stacks_and_events scenario doesn\u0027t have sla:(","commit_id":"866edcd663f67495cacde95538457fe98ee0fe12"}],"rally/benchmark/context/cleanup/resources.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e74fbaac3002405ea82939856614fb95f95c3e7c","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        return self.raw_resource.address"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    def list(self):"},{"line_number":95,"context_line":"        return [floating for floating in self._manager().list()"},{"line_number":96,"context_line":"                if floating.pool.startswith(\"rally_pool\")]"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_454191a8","line":95,"updated":"2015-04-04 23:27:57.000000000","message":"it would be nice to rename \"floating\" variable to \"floating_ip\" or \"fip\"","commit_id":"802f901d8c9b9133d65af10e6dc5b37faed64358"}],"rally/benchmark/scenarios/nova/floating_ips_bulk.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2b2d63fc62944635cd013b7778b7b1f251a01406","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"\"\"Benchmark scenarios for create nova floating IP by range.\"\"\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @validation.required_services(consts.Service.NOVA)"},{"line_number":26,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":27,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"nova\"]})"},{"line_number":28,"context_line":"    def create_and_list_floating_ips_bulk(self, start_cidr, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Create nova floating IP by range and list it."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa963961_2cd37c3a","line":26,"updated":"2015-03-26 16:18:58.000000000","message":"as far as I can see from functions, which are added in utils, this scenario requires admin, not user, so you should change arguments for required_openstack decorator(admin\u003dTrue)","commit_id":"dd8d3daf9835e9a2300264d312c085d8b8bf374c"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2b2d63fc62944635cd013b7778b7b1f251a01406","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    @validation.required_services(consts.Service.NOVA)"},{"line_number":41,"context_line":"    @validation.required_openstack(users\u003dTrue)"},{"line_number":42,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"nova\"]})"},{"line_number":43,"context_line":"    def create_and_delete_floating_ips_bulk(self, start_cidr, **kwargs):"},{"line_number":44,"context_line":"        \"\"\"Create nova floating IP by range and delete it."},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"        This scenario creates a floating IP by range and then delete it."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa963961_0cbf98d1","line":43,"updated":"2015-03-26 16:18:58.000000000","message":"same here","commit_id":"dd8d3daf9835e9a2300264d312c085d8b8bf374c"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"aa5f48bcf2195bf6069f543a61f0cf83c9e875ee","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @validation.required_services(consts.Service.NOVA)"},{"line_number":26,"context_line":"    @validation.required_openstack(admin\u003dTrue)"},{"line_number":27,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"nova\"]})"},{"line_number":28,"context_line":"    def create_and_list_floating_ips_bulk(self, start_cidr, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Create nova floating IP by range and list it."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_277d916e","line":27,"updated":"2015-03-31 10:07:38.000000000","message":"not sure that this cleanup will remove created floating ips...","commit_id":"a950013b03b31c6918719d79230e921a6416f664"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"742381138be42559389f25d025f72ed3c62b9afe","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    @validation.required_services(consts.Service.NOVA)"},{"line_number":26,"context_line":"    @validation.required_openstack(admin\u003dTrue)"},{"line_number":27,"context_line":"    @base.scenario(context\u003d{\"cleanup\": [\"nova\"]})"},{"line_number":28,"context_line":"    def create_and_list_floating_ips_bulk(self, start_cidr, **kwargs):"},{"line_number":29,"context_line":"        \"\"\"Create nova floating IP by range and list it."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da9b358b_57b4abcf","line":27,"in_reply_to":"da9b358b_277d916e","updated":"2015-03-31 21:12:47.000000000","message":"Nope it won\u0027t because there should be \n\nhttps://github.com/stackforge/rally/blob/master/rally/benchmark/context/cleanup/resources.py#L63-L85\n\n\nBy the way I would prefer to use create new cleanup resource and use here: \n\n  \"cleanup\": \"nova.floating_ip\" \n\n\nAnd this is special kind of cleanup it\u0027s admin cleanup it means that we should generate pool name based on rally template and delete only pools that were actually created by rally:\n\n\nhttps://github.com/openstack/python-novaclient/blob/master/novaclient/v2/floating_ips_bulk.py#L45-L46","commit_id":"a950013b03b31c6918719d79230e921a6416f664"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e74fbaac3002405ea82939856614fb95f95c3e7c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        :param kwargs: Optional additional arguments for range IP creation"},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self._create_floating_ips_bulk(start_cidr, **kwargs)"},{"line_number":39,"context_line":"        self._list_floating_ips_bulk()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @validation.required_parameters(\"start_cidr\")"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_85367950","line":38,"updated":"2015-04-04 23:27:57.000000000","message":"you should check that kwargs doesn\u0027t contain \"pool\" name. It can be done via validators.","commit_id":"802f901d8c9b9133d65af10e6dc5b37faed64358"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e74fbaac3002405ea82939856614fb95f95c3e7c","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        :param kwargs: Optional additional arguments for range IP creation"},{"line_number":52,"context_line":"        \"\"\""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        floating_ips_bulk \u003d self._create_floating_ips_bulk(start_cidr,"},{"line_number":55,"context_line":"                                                           **kwargs)"},{"line_number":56,"context_line":"        self._delete_floating_ips_bulk(floating_ips_bulk.ip_range)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baa041b7_65393541","line":54,"updated":"2015-04-04 23:27:57.000000000","message":"same here","commit_id":"802f901d8c9b9133d65af10e6dc5b37faed64358"}],"rally/benchmark/scenarios/nova/utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"3da55e35cbf24b14fc4ebaf2436d6728be71943c","unresolved":false,"context_lines":[{"line_number":706,"context_line":"        return self.admin_clients(\"nova\").floating_ips_bulk.list()"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    @base.atomic_action_timer(\"nova.create_floating_ips_bulk\")"},{"line_number":709,"context_line":"    def _create_floating_ips_bulk(self, ip_range, **kwargs):"},{"line_number":710,"context_line":"        \"\"\"Create floating IPs by range.\"\"\""},{"line_number":711,"context_line":"        ip_range \u003d network_wrapper.generate_cidr(start_cidr\u003dip_range)"},{"line_number":712,"context_line":"        pool_name \u003d self._generate_random_name(prefix\u003d\"rally_fip_pool_\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"9abe1de1_603ce82f","line":709,"updated":"2015-04-27 09:50:02.000000000","message":"Variable name `ip_range\u0027 looks confusing - why do not rename it to `start_cidr\u0027 (as this is called so in another places)?","commit_id":"122ee4af493b111b4ac5933762a2928a4122d5ea"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"f1fe894c789ec5baa644c6be27ea9e5f4b7061fd","unresolved":false,"context_lines":[{"line_number":706,"context_line":"        return self.admin_clients(\"nova\").floating_ips_bulk.list()"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    @base.atomic_action_timer(\"nova.create_floating_ips_bulk\")"},{"line_number":709,"context_line":"    def _create_floating_ips_bulk(self, ip_range, **kwargs):"},{"line_number":710,"context_line":"        \"\"\"Create floating IPs by range.\"\"\""},{"line_number":711,"context_line":"        ip_range \u003d network_wrapper.generate_cidr(start_cidr\u003dip_range)"},{"line_number":712,"context_line":"        pool_name \u003d self._generate_random_name(prefix\u003d\"rally_fip_pool_\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"9abe1de1_0b378db1","line":709,"in_reply_to":"9abe1de1_0bff8d02","updated":"2015-04-27 09:59:35.000000000","message":"Okay","commit_id":"122ee4af493b111b4ac5933762a2928a4122d5ea"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7b1e93ec97d2395a2b39a5e3f3fa1e8a1ff1a240","unresolved":false,"context_lines":[{"line_number":706,"context_line":"        return self.admin_clients(\"nova\").floating_ips_bulk.list()"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":"    @base.atomic_action_timer(\"nova.create_floating_ips_bulk\")"},{"line_number":709,"context_line":"    def _create_floating_ips_bulk(self, ip_range, **kwargs):"},{"line_number":710,"context_line":"        \"\"\"Create floating IPs by range.\"\"\""},{"line_number":711,"context_line":"        ip_range \u003d network_wrapper.generate_cidr(start_cidr\u003dip_range)"},{"line_number":712,"context_line":"        pool_name \u003d self._generate_random_name(prefix\u003d\"rally_fip_pool_\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"9abe1de1_0bff8d02","line":709,"in_reply_to":"9abe1de1_603ce82f","updated":"2015-04-27 09:54:00.000000000","message":"`ip_range` is a native name in nova for floating ips bulk. Imo, if we rename it here, it will be more confusing(and strange).","commit_id":"122ee4af493b111b4ac5933762a2928a4122d5ea"}],"rally/benchmark/validation.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5a13c71d53ad152a0f30a02c84dfdfded1b89a90","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"@validator"},{"line_number":500,"context_line":"def is_arg_set(config, clients, deployment, arg):"},{"line_number":501,"context_line":"    \"\"\"Validator that check that argument is not set.\"\"\""},{"line_number":502,"context_line":"    if config.get(\"args\", {}).get(arg):"},{"line_number":503,"context_line":"        return ValidationResult(False, \"You can\u0027t specify argument `%s`\" % arg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"dac4157f_792d7a45","line":500,"updated":"2015-04-21 13:22:40.000000000","message":"We already have `required_parameter`, since this decorator is  opposite to it, lets name it to something similar, for example \"restricted_parameter\".\n\nAlso, please, rename \"arg\" to \"param_name\" or something like that","commit_id":"8c248aa4e49c32fbdcea87d08e25209ae9ca2d2e"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"3da55e35cbf24b14fc4ebaf2436d6728be71943c","unresolved":false,"context_lines":[{"line_number":499,"context_line":"@validator"},{"line_number":500,"context_line":"def restricted_parameters(config, clients, deployment, param_name):"},{"line_number":501,"context_line":"    \"\"\"Validator that check that parameter is not set.\"\"\""},{"line_number":502,"context_line":"    if config.get(\"args\", {}).get(param_name):"},{"line_number":503,"context_line":"        return ValidationResult(False, \"You can\u0027t specify parameter `%s`\" %"},{"line_number":504,"context_line":"                                param_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9abe1de1_2048305b","line":502,"updated":"2015-04-27 09:50:02.000000000","message":"This does not guarantee that param_name is not set.\n\nUse `param_name not in config.get(\"args\", {})\u0027 instead.\n\n \u003e\u003e\u003e bool({}.get(\"foo\"))\n False\n \u003e\u003e\u003e bool({\"foo\": \"\"}.get(\"foo\"))\n False\n \u003e\u003e\u003e bool({\"foo\": False}.get(\"foo\"))\n False\n \u003e\u003e\u003e bool({\"foo\": 0}.get(\"foo\"))\n False","commit_id":"122ee4af493b111b4ac5933762a2928a4122d5ea"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7b1e93ec97d2395a2b39a5e3f3fa1e8a1ff1a240","unresolved":false,"context_lines":[{"line_number":499,"context_line":"@validator"},{"line_number":500,"context_line":"def restricted_parameters(config, clients, deployment, param_name):"},{"line_number":501,"context_line":"    \"\"\"Validator that check that parameter is not set.\"\"\""},{"line_number":502,"context_line":"    if config.get(\"args\", {}).get(param_name):"},{"line_number":503,"context_line":"        return ValidationResult(False, \"You can\u0027t specify parameter `%s`\" %"},{"line_number":504,"context_line":"                                param_name)"}],"source_content_type":"text/x-python","patch_set":14,"id":"9abe1de1_8b139d5c","line":502,"in_reply_to":"9abe1de1_2048305b","updated":"2015-04-27 09:54:00.000000000","message":"agreed.","commit_id":"122ee4af493b111b4ac5933762a2928a4122d5ea"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"1ebfb9626f3f538dc9f9325e84844b3edac85a40","unresolved":false,"context_lines":[{"line_number":499,"context_line":"@validator"},{"line_number":500,"context_line":"def restricted_parameters(config, clients, deployment, param_name):"},{"line_number":501,"context_line":"    \"\"\"Validator that check that parameter is not set.\"\"\""},{"line_number":502,"context_line":"    if param_name not in config.get(\"args\", {}):"},{"line_number":503,"context_line":"        return ValidationResult(False, \"You can\u0027t specify parameter `%s`\" %"},{"line_number":504,"context_line":"                                param_name)"}],"source_content_type":"text/x-python","patch_set":15,"id":"9abe1de1_ecbeafd3","line":502,"updated":"2015-04-27 11:14:34.000000000","message":"Alexander made a mistake. You should use here `param_name in config.get(\"args\", {}):`(without not statement)","commit_id":"8fdb4032675da1811ffe19d2bf53c9bdb912561f"}]}
