)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"e49a572fc44a4ebc4b143497d7ab6539146f64aa","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add nova.CreateFlavorAndAddTenantAccess scenario"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"create a flavor,then add flavor access to"},{"line_number":10,"context_line":"given tenant"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I2b483bc3fc62dffb837f79c755159a00cbb757c2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da4df55a_a01b08c9","line":9,"range":{"start_line":9,"start_character":15,"end_line":9,"end_character":16},"updated":"2016-12-27 16:13:23.000000000","message":"add space after comma","commit_id":"c2fe1e3f2a09e05814cc7f7d074d2325cb93b91c"}],"rally/plugins/openstack/scenarios/nova/flavors.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e7516fbfd7fcbeb30c9ed9c7c26c64bbe08a0a6e","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"@validation.required_services(consts.Service.NOVA)"},{"line_number":74,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":75,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"]},"},{"line_number":76,"context_line":"                    name\u003d\"NovaFlavors.create_flavor_and_add_tenant_access\")"},{"line_number":77,"context_line":"class CreateFlavorAndAddTenantAccess(utils.NovaScenario,"},{"line_number":78,"context_line":"                                     kutils.KeystoneScenario):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_4c576c02","line":75,"updated":"2016-11-23 11:26:05.000000000","message":"you need to add keystone cleanup here","commit_id":"ee5dee5de87c6c42cef6516c4daf95a22b6ca0ef"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e7516fbfd7fcbeb30c9ed9c7c26c64bbe08a0a6e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"]},"},{"line_number":76,"context_line":"                    name\u003d\"NovaFlavors.create_flavor_and_add_tenant_access\")"},{"line_number":77,"context_line":"class CreateFlavorAndAddTenantAccess(utils.NovaScenario,"},{"line_number":78,"context_line":"                                     kutils.KeystoneScenario):"},{"line_number":79,"context_line":"    def run(self, ram, vcpus, disk, create_flavor_args\u003dNone,"},{"line_number":80,"context_line":"            create_tenant_args\u003dNone):"},{"line_number":81,"context_line":"        \"\"\"Create a flavor ,Add flavor access for the given tenant."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_0c4d7472","line":78,"range":{"start_line":78,"start_character":37,"end_line":78,"end_character":60},"updated":"2016-11-23 11:26:05.000000000","message":"it will be deprecated soon (see https://review.openstack.org/#/c/394583 , which is high priority change) .\n\nSince identity service is already merged, you can use\n   from rally.plugins.openstack.services.identity import identity\n\n   ...\n\n   def __init__(self, *args, **kwargs):\n       super(CreateFlavorAndAddTenantAccess, self).__init__(*args, **kwargs)\n       self.admin_keystone \u003d identity.Identity(\n                self._admin_clients, name_generator\u003dself.generate_random_name,\n                atomic_inst\u003dself.atomic_actions())\n  \n    ...\n    def run(...):\n        ...\n        tenant \u003d self.admin_keystone.create_project(...)","commit_id":"ee5dee5de87c6c42cef6516c4daf95a22b6ca0ef"},{"author":{"_account_id":23435,"name":"zhangzhihui","email":"zhangzh.fnst@cn.fujitsu.com","username":"zhangzhang"},"change_message_id":"039dc156b081c4e1c2ed8504a1f3e4ce3b8b9301","unresolved":false,"context_lines":[{"line_number":75,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"]},"},{"line_number":76,"context_line":"                    name\u003d\"NovaFlavors.create_flavor_and_add_tenant_access\")"},{"line_number":77,"context_line":"class CreateFlavorAndAddTenantAccess(utils.NovaScenario,"},{"line_number":78,"context_line":"                                     kutils.KeystoneScenario):"},{"line_number":79,"context_line":"    def run(self, ram, vcpus, disk, create_flavor_args\u003dNone,"},{"line_number":80,"context_line":"            create_tenant_args\u003dNone):"},{"line_number":81,"context_line":"        \"\"\"Create a flavor ,Add flavor access for the given tenant."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a74a57a_80abe0d5","line":78,"range":{"start_line":78,"start_character":37,"end_line":78,"end_character":60},"in_reply_to":"5a74a57a_0c4d7472","updated":"2016-11-24 03:19:40.000000000","message":"Thank you for your suggestion, But I think I can use \u0027self.context[\"tenant\"][\"id\"]\u0027 to get the tenant. what do you think of the method?","commit_id":"ee5dee5de87c6c42cef6516c4daf95a22b6ca0ef"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"ad64cdaf533c24ea6b8862a4c5ba5113f57c487a","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        :param disk: Size of local disk in GB"},{"line_number":86,"context_line":"        :param kwargs: Optional additional arguments for flavor creation"},{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":"        flavor \u003d self._create_flavor(ram, vcpus, disk, **kwargs)"},{"line_number":89,"context_line":"        self._add_tenant_access(flavor.id, self.context[\"tenant\"][\"id\"])"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1a6eadb0_a7c62014","line":88,"updated":"2016-12-20 10:33:45.000000000","message":"Please add check:\n\n   self.assertTrue(flavor)\n\nas in CreateAndListFlavorAccess scenario","commit_id":"c7d27f363501e73139b270b234d05bc29d2bfa14"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"e49a572fc44a4ebc4b143497d7ab6539146f64aa","unresolved":false,"context_lines":[{"line_number":75,"context_line":"@validation.required_openstack(admin\u003dTrue)"},{"line_number":76,"context_line":"@scenario.configure(context\u003d{\"admin_cleanup\": [\"nova\"]},"},{"line_number":77,"context_line":"                    name\u003d\"NovaFlavors.create_flavor_and_add_tenant_access\")"},{"line_number":78,"context_line":"class CreateFlavorAndAddTenantAccess(utils.NovaScenario,):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def run(self, ram, vcpus, disk, **kwargs):"},{"line_number":81,"context_line":"        \"\"\"Create a flavor ,Add flavor access for the given tenant."}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_60e68016","line":78,"range":{"start_line":78,"start_character":55,"end_line":78,"end_character":56},"updated":"2016-12-27 16:13:23.000000000","message":"Please remove","commit_id":"c2fe1e3f2a09e05814cc7f7d074d2325cb93b91c"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"e49a572fc44a4ebc4b143497d7ab6539146f64aa","unresolved":false,"context_lines":[{"line_number":78,"context_line":"class CreateFlavorAndAddTenantAccess(utils.NovaScenario,):"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def run(self, ram, vcpus, disk, **kwargs):"},{"line_number":81,"context_line":"        \"\"\"Create a flavor ,Add flavor access for the given tenant."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        :param ram: Memory in MB for the flavor"},{"line_number":84,"context_line":"        :param vcpus: Number of VCPUs for the flavor"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_c013acb6","line":81,"range":{"start_line":81,"start_character":26,"end_line":81,"end_character":28},"updated":"2016-12-27 16:13:23.000000000","message":"comma","commit_id":"c2fe1e3f2a09e05814cc7f7d074d2325cb93b91c"}],"tests/unit/plugins/openstack/scenarios/nova/test_flavors.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"ef4932b8a970a82ef22ace358423662cb0b19da4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        scenario._tenant_create \u003d mock.MagicMock(return_value\u003dtenant)"},{"line_number":57,"context_line":"        scenario._add_tenant_access \u003d mock.MagicMock()"},{"line_number":58,"context_line":"        flavor_args \u003d {\"fakeargs\": \"f\"}"},{"line_number":59,"context_line":"        tenant_args \u003d {\"fakeargs\": \"f\"}"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        scenario.run(ram\u003d100, vcpus\u003d1, disk\u003d1, create_flavor_args\u003dflavor_args,"},{"line_number":62,"context_line":"                     create_tenant_args\u003dtenant_args)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a77a97e_d8fd31b2","line":59,"updated":"2016-11-18 19:52:52.000000000","message":"Use different args for these, to make sure they don\u0027t get switched around in the code.","commit_id":"f71e3a7ce7d37ac0ad12d6e5335467b6f35cd851"}]}
