)]}'
{"rally-jobs/nova.yaml":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ab461a22a3364fdb831536948da95eb260354b73","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        users:"},{"line_number":1415,"context_line":"          tenants: 3"},{"line_number":1416,"context_line":"          users_per_tenant: 2"},{"line_number":1417,"context_line":"        roles:"},{"line_number":1418,"context_line":"          - admin"},{"line_number":1419,"context_line":"      sla:"},{"line_number":1420,"context_line":"        failure_rate:"},{"line_number":1421,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5a74a57a_caa9e125","line":1418,"range":{"start_line":1417,"start_character":8,"end_line":1418,"end_character":17},"updated":"2016-11-28 21:35:20.000000000","message":"not sure why you need it. which operation requires \"admin\" role and why self.admin_clients is not used there?","commit_id":"f94fd1b14ac4cf0d99a05e8f48152f19dedad144"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ec7d463172a2e6562e98f9a71b2cb70ff8ef23c5","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        users:"},{"line_number":1415,"context_line":"          tenants: 3"},{"line_number":1416,"context_line":"          users_per_tenant: 2"},{"line_number":1417,"context_line":"        roles:"},{"line_number":1418,"context_line":"          - admin"},{"line_number":1419,"context_line":"      sla:"},{"line_number":1420,"context_line":"        failure_rate:"},{"line_number":1421,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5a74a57a_19007965","line":1418,"range":{"start_line":1417,"start_character":8,"end_line":1418,"end_character":17},"in_reply_to":"5a74a57a_87827fc6","updated":"2016-11-29 13:19:01.000000000","message":"got it. see my suggestion at aggregate.py file","commit_id":"f94fd1b14ac4cf0d99a05e8f48152f19dedad144"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"f0082789c3717d07c0739ab535eba127913da001","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        users:"},{"line_number":1415,"context_line":"          tenants: 3"},{"line_number":1416,"context_line":"          users_per_tenant: 2"},{"line_number":1417,"context_line":"        roles:"},{"line_number":1418,"context_line":"          - admin"},{"line_number":1419,"context_line":"      sla:"},{"line_number":1420,"context_line":"        failure_rate:"},{"line_number":1421,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"5a74a57a_87827fc6","line":1418,"range":{"start_line":1417,"start_character":8,"end_line":1418,"end_character":17},"in_reply_to":"5a74a57a_caa9e125","updated":"2016-11-28 23:34:53.000000000","message":"If I don\u0027t have admin role, the server object returned after booting an instance does not have \"OS-EXT-SRV-ATTR:hypervisor_hostname\" attribute, so it gives me an AttributeError. Here\u0027s the pastebin of dir() of server object with and without admin role: http://paste.openstack.org/show/590725/\n\nMaybe there\u0027s a better way to do this?","commit_id":"f94fd1b14ac4cf0d99a05e8f48152f19dedad144"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"bdebae0116e6d6847c30665943255bd7294bc24b","unresolved":false,"context_lines":[{"line_number":1414,"context_line":"        users:"},{"line_number":1415,"context_line":"          tenants: 3"},{"line_number":1416,"context_line":"          users_per_tenant: 2"},{"line_number":1417,"context_line":"        roles:"},{"line_number":1418,"context_line":"          - admin"},{"line_number":1419,"context_line":"      sla:"},{"line_number":1420,"context_line":"        failure_rate:"},{"line_number":1421,"context_line":"          max: 0"}],"source_content_type":"text/x-yaml","patch_set":10,"id":"5a74a57a_a8e39632","line":1418,"range":{"start_line":1417,"start_character":8,"end_line":1418,"end_character":17},"updated":"2016-11-29 20:51:30.000000000","message":"you forgot to delete this one","commit_id":"e429f4e0740f4eb777675bca5a470a4c150c2217"}],"rally/plugins/openstack/scenarios/nova/aggregates.py":[{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"231bef86572a3055a15078ce123baf66c6f94719","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_8e77bad3","line":115,"updated":"2016-11-15 13:40:02.000000000","message":"just context\u003d{\"admin_cleanup\": [\"nova\"]","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"540b4f729daeb2304a601bc5b394c815580668f4","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_c9498a8d","line":115,"in_reply_to":"5a74a57a_29783ef2","updated":"2016-11-23 23:27:48.000000000","message":"*so admin_cleanup can\u0027t find servers there,","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"7c8e9a830a809cc3157c0f71ff688f764ba09e85","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_fae4460e","line":115,"in_reply_to":"5a74a57a_c9498a8d","updated":"2016-11-23 23:58:41.000000000","message":"Andrey - Thanks for great explanation! It makes sense now :)","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5a408bfe77d1c8216f77e71cddf8cc4c45f58951","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_7a1756a3","line":115,"in_reply_to":"5a74a57a_fae4460e","updated":"2016-11-24 00:10:46.000000000","message":"we need to document it somewhere...\n\nI created a task for it at our trello board - https://trello.com/c/671GISl8/246-docs-document-who-cleanup-works\n\nPS: feel free to use our board for documenting your plans, take existing tasks and etc :)","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"e16ffd49310ff5b3361768b793a3711fe9e48d5c","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_3bf7348c","line":115,"in_reply_to":"7a77a97e_383c01e2","updated":"2016-11-17 19:35:08.000000000","message":"Just verified that with just admin cleanup, the instances are not deleted. I had to use \"cleanup\": [\"nova\"].","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":18404,"name":"Ma Xinjian","email":"maxj.fnst@cn.fujitsu.com","username":"maxinjian"},"change_message_id":"5d6f2747d0b7291b71dab823f0c84ff6e28bdaea","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_925a544f","line":115,"in_reply_to":"7a77a97e_5dc29d34","updated":"2016-11-16 01:46:48.000000000","message":"Because you add roles: admin in json file, It means you can cleanup instances with admin_cleanup. So cleanup is reduntant.","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"94d78c4102921bbdc4ed64066dc12d79502afa0d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_5dc29d34","line":115,"in_reply_to":"7a77a97e_8e77bad3","updated":"2016-11-15 18:33:25.000000000","message":"I think \"cleanup\": [\"nova\"] is required to cleanup instances that are booted?","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4ce31abc9a99524c100ee06c747b74e91c4133f4","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_29783ef2","line":115,"in_reply_to":"7a77a97e_8e77bad3","updated":"2016-11-23 23:26:48.000000000","message":"let me explain how cleanup works. It just lists resources for specified user \u0026 tenant. In case of \"user_cleanup\", it will take temporary user to search all his resources, then delete them. In case of \"admin_cleanup\", cleanup will check all resources created in admin tenant(at least in case of regular resources).\n\nmethod _boot_server uses temp_user, so admin_cleanup can\u0027t find such service, so this line is right - admin_cleanup for removing aggregates and regular cleanup for removing vms.","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"688c1ac25fc6bfb64a3a7a83b5b18bb8871a2597","unresolved":false,"context_lines":[{"line_number":112,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_383c01e2","line":115,"in_reply_to":"7a77a97e_925a544f","updated":"2016-11-16 02:45:48.000000000","message":"Got it. Thanks.","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"7192b1304eb59e9e4d1ea4ee1fcfe43f2c9399a6","unresolved":false,"context_lines":[{"line_number":113,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":114,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":115,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":116,"context_line":"                    name\u003d\"NovaAggregates.create_and_verify_aggregate\")"},{"line_number":117,"context_line":"class CreateAndVerifyAggregate(utils.NovaScenario):"},{"line_number":118,"context_line":"    \"\"\"Scenario to verify an aggregate.\"\"\""},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_84b06bf6","line":116,"updated":"2016-11-15 13:41:29.000000000","message":"create_aggregate_add_to_host_and_boot_server, for example. Isn\u0027t better?","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"231bef86572a3055a15078ce123baf66c6f94719","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        :param image: The image ID to boot from"},{"line_number":130,"context_line":"        :param metadata: The metadata to be set as flavor extra specs"},{"line_number":131,"context_line":"        :param availability_zone: The availability zone of the aggregate"},{"line_number":132,"context_line":"        :param aggregate_kwargs: Optional additional arguments to verify host"},{"line_number":133,"context_line":"        aggregates"},{"line_number":134,"context_line":"        :raises RallyException: if instance and aggregate hosts do not match"},{"line_number":135,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_410f33e1","line":132,"updated":"2016-11-15 13:40:02.000000000","message":"this is boot_server_kwargs","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"94d78c4102921bbdc4ed64066dc12d79502afa0d","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        :param image: The image ID to boot from"},{"line_number":130,"context_line":"        :param metadata: The metadata to be set as flavor extra specs"},{"line_number":131,"context_line":"        :param availability_zone: The availability zone of the aggregate"},{"line_number":132,"context_line":"        :param aggregate_kwargs: Optional additional arguments to verify host"},{"line_number":133,"context_line":"        aggregates"},{"line_number":134,"context_line":"        :raises RallyException: if instance and aggregate hosts do not match"},{"line_number":135,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_9de275d4","line":132,"in_reply_to":"7a77a97e_410f33e1","updated":"2016-11-15 18:33:25.000000000","message":"Done","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"231bef86572a3055a15078ce123baf66c6f94719","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        aggregate \u003d self._create_aggregate(availability_zone)"},{"line_number":140,"context_line":"        hosts \u003d self._list_hypervisors()"},{"line_number":141,"context_line":"        self.assertNotEqual(len(hosts), 0, \"Host list is empty\")"},{"line_number":142,"context_line":"        host_name \u003d hosts[0].hypervisor_hostname"},{"line_number":143,"context_line":"        self._aggregate_set_metadata(aggregate, metadata)"},{"line_number":144,"context_line":"        self._aggregate_add_host(aggregate, host_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_ce76123e","line":141,"updated":"2016-11-15 13:40:02.000000000","message":"why its here? Don\u0027t use asserts in scenario, remove it. Is it possible case?","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"4ce31abc9a99524c100ee06c747b74e91c4133f4","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        aggregate \u003d self._create_aggregate(availability_zone)"},{"line_number":140,"context_line":"        hosts \u003d self._list_hypervisors()"},{"line_number":141,"context_line":"        self.assertNotEqual(len(hosts), 0, \"Host list is empty\")"},{"line_number":142,"context_line":"        host_name \u003d hosts[0].hypervisor_hostname"},{"line_number":143,"context_line":"        self._aggregate_set_metadata(aggregate, metadata)"},{"line_number":144,"context_line":"        self._aggregate_add_host(aggregate, host_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a74a57a_662c254b","line":141,"in_reply_to":"7a77a97e_ce76123e","updated":"2016-11-23 23:26:48.000000000","message":"We can use such asserts in scenarios, that is why they were added to base class;)","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"94d78c4102921bbdc4ed64066dc12d79502afa0d","unresolved":false,"context_lines":[{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        aggregate \u003d self._create_aggregate(availability_zone)"},{"line_number":140,"context_line":"        hosts \u003d self._list_hypervisors()"},{"line_number":141,"context_line":"        self.assertNotEqual(len(hosts), 0, \"Host list is empty\")"},{"line_number":142,"context_line":"        host_name \u003d hosts[0].hypervisor_hostname"},{"line_number":143,"context_line":"        self._aggregate_set_metadata(aggregate, metadata)"},{"line_number":144,"context_line":"        self._aggregate_add_host(aggregate, host_name)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_bd0c9195","line":141,"in_reply_to":"7a77a97e_ce76123e","updated":"2016-11-15 18:33:25.000000000","message":"Well, I wanted to short circuit the test if there are no hosts available. But I can remove this.","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"231bef86572a3055a15078ce123baf66c6f94719","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        host_name \u003d hosts[0].hypervisor_hostname"},{"line_number":143,"context_line":"        self._aggregate_set_metadata(aggregate, metadata)"},{"line_number":144,"context_line":"        self._aggregate_add_host(aggregate, host_name)"},{"line_number":145,"context_line":"        flavor \u003d self._create_flavor(ram\u003d512, vcpus\u003d1, disk\u003d1)"},{"line_number":146,"context_line":"        flavor.set_keys(metadata)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        server \u003d self._boot_server(image, flavor.id, **aggregate_kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_55e28d04","line":145,"updated":"2016-11-15 13:40:02.000000000","message":"constant values is bad. They should be configured through args","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"94d78c4102921bbdc4ed64066dc12d79502afa0d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        host_name \u003d hosts[0].hypervisor_hostname"},{"line_number":143,"context_line":"        self._aggregate_set_metadata(aggregate, metadata)"},{"line_number":144,"context_line":"        self._aggregate_add_host(aggregate, host_name)"},{"line_number":145,"context_line":"        flavor \u003d self._create_flavor(ram\u003d512, vcpus\u003d1, disk\u003d1)"},{"line_number":146,"context_line":"        flavor.set_keys(metadata)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        server \u003d self._boot_server(image, flavor.id, **aggregate_kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a77a97e_9dc195e7","line":145,"in_reply_to":"7a77a97e_55e28d04","updated":"2016-11-15 18:33:25.000000000","message":"I was just trying to mimic m1.tiny flavor here. I can\u0027t use the m1.tiny flavor object since it causes problems when setting and unsetting metadata by different threads (times\u003d10 in task). Besides, I think the primary purpose of this test is to verify host(s) in an aggregate, so we just need to boot up a server irrespective of the flavor. What do you think?","commit_id":"e93c9b81e4916d5a6d46c0d2f15588f6819a0d69"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ec7d463172a2e6562e98f9a71b2cb70ff8ef23c5","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":129,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":130,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":131,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":132,"context_line":"                    name\u003d\"NovaAggregates.\""},{"line_number":133,"context_line":"                         \"create_aggregate_add_host_and_boot_server\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_59cf5155","line":130,"range":{"start_line":130,"start_character":31,"end_line":130,"end_character":42},"updated":"2016-11-29 13:19:01.000000000","message":"this scenarios required users too, so add \"users\u003dTrue\" :)","commit_id":"f94fd1b14ac4cf0d99a05e8f48152f19dedad144"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"43fa68c5e48f73a9993db353d5752d3b011f71c3","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"@types.convert(image\u003d{\"type\": \"glance_image\"})"},{"line_number":129,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":130,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":131,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"], \"cleanup\": [\"nova\"]},"},{"line_number":132,"context_line":"                    name\u003d\"NovaAggregates.\""},{"line_number":133,"context_line":"                         \"create_aggregate_add_host_and_boot_server\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_5ed9e482","line":130,"range":{"start_line":130,"start_character":31,"end_line":130,"end_character":42},"in_reply_to":"5a74a57a_59cf5155","updated":"2016-11-29 18:04:49.000000000","message":"Good catch. Thanks for the review!","commit_id":"f94fd1b14ac4cf0d99a05e8f48152f19dedad144"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"ec7d463172a2e6562e98f9a71b2cb70ff8ef23c5","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        flavor \u003d self._create_flavor(ram, vcpus, disk)"},{"line_number":165,"context_line":"        flavor.set_keys(metadata)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        server \u003d self._boot_server(image, flavor.id, **boot_server_kwargs)"},{"line_number":168,"context_line":"        instance_hostname \u003d getattr(server,"},{"line_number":169,"context_line":"                                    \"OS-EXT-SRV-ATTR:hypervisor_hostname\")"},{"line_number":170,"context_line":"        if instance_hostname !\u003d host_name:"},{"line_number":171,"context_line":"            raise exceptions.RallyException(\"Instance host and aggregate \""},{"line_number":172,"context_line":"                                            \"host are different\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_19b239e5","line":169,"range":{"start_line":167,"start_character":8,"end_line":169,"end_character":74},"updated":"2016-11-29 13:19:01.000000000","message":"server \u003d self._boot...\n# NOTE: we need to get server object by admin user to \n# obtain \"hypervisor_hostname\" property\nserver \u003d self.admin_clients(\"nova\").servers.get(server.id)\n...","commit_id":"f94fd1b14ac4cf0d99a05e8f48152f19dedad144"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"43fa68c5e48f73a9993db353d5752d3b011f71c3","unresolved":false,"context_lines":[{"line_number":164,"context_line":"        flavor \u003d self._create_flavor(ram, vcpus, disk)"},{"line_number":165,"context_line":"        flavor.set_keys(metadata)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        server \u003d self._boot_server(image, flavor.id, **boot_server_kwargs)"},{"line_number":168,"context_line":"        instance_hostname \u003d getattr(server,"},{"line_number":169,"context_line":"                                    \"OS-EXT-SRV-ATTR:hypervisor_hostname\")"},{"line_number":170,"context_line":"        if instance_hostname !\u003d host_name:"},{"line_number":171,"context_line":"            raise exceptions.RallyException(\"Instance host and aggregate \""},{"line_number":172,"context_line":"                                            \"host are different\")"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_7e8f8075","line":169,"range":{"start_line":167,"start_character":8,"end_line":169,"end_character":74},"in_reply_to":"5a74a57a_19b239e5","updated":"2016-11-29 18:04:49.000000000","message":"Done","commit_id":"f94fd1b14ac4cf0d99a05e8f48152f19dedad144"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"50bb99bb0f1e7184e30412b30fb89062dc48f785","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"        server \u003d self._boot_server(image, flavor.id, **boot_server_kwargs)"},{"line_number":168,"context_line":"        # NOTE: we need to get server object by admin user to obtain"},{"line_number":169,"context_line":"        # \"hypervisor_hostname\" attribute"},{"line_number":170,"context_line":"        instance_hostname \u003d getattr(server,"},{"line_number":171,"context_line":"                                    \"OS-EXT-SRV-ATTR:hypervisor_hostname\")"},{"line_number":172,"context_line":"        if instance_hostname !\u003d host_name:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a74a57a_68c09e7d","line":169,"updated":"2016-11-29 20:52:50.000000000","message":"you need to add external get method to obtain server object via admin_clients, see my comment to previous patch","commit_id":"e429f4e0740f4eb777675bca5a470a4c150c2217"}],"rally/plugins/openstack/scenarios/nova/utils.py":[{"author":{"_account_id":23435,"name":"zhangzhihui","email":"zhangzh.fnst@cn.fujitsu.com","username":"zhangzhang"},"change_message_id":"b0129c6ed3446ae61b898783c9a5123e70f78c14","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                                                                 host)"},{"line_number":1260,"context_line":""},{"line_number":1261,"context_line":"    @atomic.action_timer(\"nova.aggregate_set_metadata\")"},{"line_number":1262,"context_line":"    def _aggregate_set_metadata(self, aggregate, metadata):"},{"line_number":1263,"context_line":"        \"\"\"Set metadata to an aggregate"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"        :param aggregate: The aggregate to set metadata to"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_0dcc9734","line":1262,"range":{"start_line":1262,"start_character":8,"end_line":1262,"end_character":31},"updated":"2016-11-15 03:56:00.000000000","message":"please add test function for it in tests/unit/plugins/openstack/scenarios/nova/test_utils.py","commit_id":"00a32817bd49c6166bef29060edbc10709d7701d"},{"author":{"_account_id":14758,"name":"Rajath Agasthya","email":"rajagast@cisco.com","username":"rajathagasthya"},"change_message_id":"9cc114ac10eb22dabda94df5378664a85f48a074","unresolved":false,"context_lines":[{"line_number":1259,"context_line":"                                                                 host)"},{"line_number":1260,"context_line":""},{"line_number":1261,"context_line":"    @atomic.action_timer(\"nova.aggregate_set_metadata\")"},{"line_number":1262,"context_line":"    def _aggregate_set_metadata(self, aggregate, metadata):"},{"line_number":1263,"context_line":"        \"\"\"Set metadata to an aggregate"},{"line_number":1264,"context_line":""},{"line_number":1265,"context_line":"        :param aggregate: The aggregate to set metadata to"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_382b5332","line":1262,"range":{"start_line":1262,"start_character":8,"end_line":1262,"end_character":31},"in_reply_to":"7a77a97e_0dcc9734","updated":"2016-11-15 04:14:29.000000000","message":"Will do. Thanks for pointing it out.","commit_id":"00a32817bd49c6166bef29060edbc10709d7701d"}]}
