)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2aafd0888e8c0ff327b2e036b1be64cced6be3b8","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The superclass is used to determine name patterns that should be"},{"line_number":10,"context_line":"matched against when performing cleanup."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint cleanup-refactoring"},{"line_number":13,"context_line":"Change-Id: Ieaf5dac0806d888c867bc644be148691b82af930"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"9a30ddce_7cceb35b","line":11,"updated":"2017-03-07 07:51:11.000000000","message":"@Hai: Since, you are the maintainer of this patch, please add here(after main block o commit message, but before Change-Id) a note:\n\n   Co-Authored-By: Hai Shi \u003cshihai1992@gmail.com\u003e","commit_id":"f1b2bb8089e0dd1a07c69407226455ad8b791a24"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"f705f06ebbd084810fb3c1a7dbed618c45776c0d","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The superclass is used to determine name patterns that should be"},{"line_number":10,"context_line":"matched against when performing cleanup."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint cleanup-refactoring"},{"line_number":13,"context_line":"Change-Id: Ieaf5dac0806d888c867bc644be148691b82af930"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":34,"id":"9a30ddce_3bdd1843","line":11,"in_reply_to":"9a30ddce_7cceb35b","updated":"2017-03-07 12:08:13.000000000","message":"Done","commit_id":"f1b2bb8089e0dd1a07c69407226455ad8b791a24"}],"rally/plugins/openstack/cleanup/base.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for name_label in names_label:"},{"line_number":111,"context_line":"            if hasattr(self.raw_resource, name_label):"},{"line_number":112,"context_line":"                return getattr(self.raw_resource, name_label)"},{"line_number":113,"context_line":"        return \"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def is_deleted(self):"},{"line_number":116,"context_line":"        \"\"\"Checks if the resource is deleted."}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_62c8da75","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":17},"updated":"2017-02-28 15:25:17.000000000","message":"what kind of resources doesn\u0027t have names/labels/pools?","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"fbda3005c72d4fab6a4537f3fd69f101889540fd","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for name_label in names_label:"},{"line_number":111,"context_line":"            if hasattr(self.raw_resource, name_label):"},{"line_number":112,"context_line":"                return getattr(self.raw_resource, name_label)"},{"line_number":113,"context_line":"        return \"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def is_deleted(self):"},{"line_number":116,"context_line":"        \"\"\"Checks if the resource is deleted."}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_eb2ad0e6","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":17},"in_reply_to":"ba2be162_3aa43f56","updated":"2017-03-01 09:09:52.000000000","message":"Those class or be implemented by subclass have no name params.\nhttps://github.com/openstack/rally/blob/master/rally/plugins/openstack/cleanup/resources.py#L55\nhttps://github.com/openstack/rally/blob/master/rally/plugins/openstack/cleanup/resources.py#L241\nhttps://github.com/openstack/rally/blob/master/rally/plugins/openstack/cleanup/resources.py#L735\nhttps://github.com/openstack/rally/blob/master/rally/plugins/openstack/cleanup/resources.py#L900\nhttps://github.com/openstack/rally/blob/master/rally/plugins/openstack/cleanup/resources.py#L908","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"daaa94207c4be79c26281348025c1e8ea0a00029","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for name_label in names_label:"},{"line_number":111,"context_line":"            if hasattr(self.raw_resource, name_label):"},{"line_number":112,"context_line":"                return getattr(self.raw_resource, name_label)"},{"line_number":113,"context_line":"        return \"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def is_deleted(self):"},{"line_number":116,"context_line":"        \"\"\"Checks if the resource is deleted."}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_65c46140","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":17},"in_reply_to":"ba2be162_62c8da75","updated":"2017-02-28 16:38:31.000000000","message":"novaNetwork has a label param and floatIps have a pool param.","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"463f08b0dad2b60543decf2209d670c26d12f15f","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for name_label in names_label:"},{"line_number":111,"context_line":"            if hasattr(self.raw_resource, name_label):"},{"line_number":112,"context_line":"                return getattr(self.raw_resource, name_label)"},{"line_number":113,"context_line":"        return \"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def is_deleted(self):"},{"line_number":116,"context_line":"        \"\"\"Checks if the resource is deleted."}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_3aa43f56","line":113,"range":{"start_line":113,"start_character":8,"end_line":113,"end_character":17},"in_reply_to":"ba2be162_65c46140","updated":"2017-02-28 19:07:34.000000000","message":"since such property names relate only to single resources, it is better just to override method name for them.\n\nAnd what kind of resources do not have names at all?","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"94d7f24000b5e6d6403eedb7c7b35281b587d1f1","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def name(self):"},{"line_number":104,"context_line":"        \"\"\"Returns name of resource.\"\"\""},{"line_number":105,"context_line":"        # TODO(Hai Shi): Each resource has different name label, so let us"},{"line_number":106,"context_line":"        #                hardcode them temporarily. When service refactor have"},{"line_number":107,"context_line":"        #                been done, we can use raw_resource.name uniformity."},{"line_number":108,"context_line":"        names_label \u003d [\"name\", \"label\", \"pool\"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        for name_label in names_label:"},{"line_number":111,"context_line":"            if hasattr(self.raw_resource, name_label):"},{"line_number":112,"context_line":"                return getattr(self.raw_resource, name_label)"},{"line_number":113,"context_line":"        return \"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def is_deleted(self):"},{"line_number":116,"context_line":"        \"\"\"Checks if the resource is deleted."}],"source_content_type":"text/x-python","patch_set":32,"id":"ba2be162_b0c6e765","line":113,"range":{"start_line":105,"start_character":8,"end_line":113,"end_character":17},"updated":"2017-03-03 17:08:34.000000000","message":"let\u0027s do not hardcode that logic here. it should be more clear and easier for debug if you override name property of specific resources.\n\n   class NovaFloatingIps(..):\n\n      def name(self):\n          return self.raw_resource.pool","commit_id":"5bec18759f39ea51f9d129dc8750fc8b442a73fd"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"6d550bab03a225fc63069156536fbb287e4542df","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    def name(self):"},{"line_number":104,"context_line":"        \"\"\"Returns name of resource.\"\"\""},{"line_number":105,"context_line":"        # TODO(Hai Shi): Each resource has different name label, so let us"},{"line_number":106,"context_line":"        #                hardcode them temporarily. When service refactor have"},{"line_number":107,"context_line":"        #                been done, we can use raw_resource.name uniformity."},{"line_number":108,"context_line":"        names_label \u003d [\"name\", \"label\", \"pool\"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        for name_label in names_label:"},{"line_number":111,"context_line":"            if hasattr(self.raw_resource, name_label):"},{"line_number":112,"context_line":"                return getattr(self.raw_resource, name_label)"},{"line_number":113,"context_line":"        return \"\""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"    def is_deleted(self):"},{"line_number":116,"context_line":"        \"\"\"Checks if the resource is deleted."}],"source_content_type":"text/x-python","patch_set":32,"id":"ba2be162_631e4771","line":113,"range":{"start_line":105,"start_character":8,"end_line":113,"end_character":17},"in_reply_to":"ba2be162_b0c6e765","updated":"2017-03-05 17:51:27.000000000","message":"Done","commit_id":"5bec18759f39ea51f9d129dc8750fc8b442a73fd"}],"rally/plugins/openstack/cleanup/manager.py":[{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"f09af15d26376ef3c6a6ddd37d29413d851794e8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.users \u003d users or []"},{"line_number":51,"context_line":"        self.api_versions \u003d api_versions"},{"line_number":52,"context_line":"        self.resource_classes \u003d resource_classes or [plugin.Plugin]"},{"line_number":53,"context_line":"        if not isinstance(self.resource_classes, (list, set, tuple)):"},{"line_number":54,"context_line":"            self.resource_classes \u003d list(self.resource_classes)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_cached_client(self, user):"},{"line_number":57,"context_line":"        \"\"\"Simplifies initialization and caching OpenStack clients.\"\"\""}],"source_content_type":"text/x-python","patch_set":32,"id":"ba2be162_9dbf53a9","line":54,"range":{"start_line":53,"start_character":8,"end_line":54,"end_character":63},"updated":"2017-03-03 09:47:32.000000000","message":"What do we try to support here? It is going to be a list from line 283.","commit_id":"5bec18759f39ea51f9d129dc8750fc8b442a73fd"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"79349ef8e8dbf19ae077bfc0d79d2cd21ee15b90","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.users \u003d users or []"},{"line_number":51,"context_line":"        self.api_versions \u003d api_versions"},{"line_number":52,"context_line":"        self.resource_classes \u003d resource_classes or [plugin.Plugin]"},{"line_number":53,"context_line":"        if not isinstance(self.resource_classes, (list, set, tuple)):"},{"line_number":54,"context_line":"            self.resource_classes \u003d list(self.resource_classes)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_cached_client(self, user):"},{"line_number":57,"context_line":"        \"\"\"Simplifies initialization and caching OpenStack clients.\"\"\""}],"source_content_type":"text/x-python","patch_set":32,"id":"ba2be162_4cc25dea","line":54,"range":{"start_line":53,"start_character":8,"end_line":54,"end_character":63},"in_reply_to":"ba2be162_9dbf53a9","updated":"2017-03-04 17:02:10.000000000","message":"Look like redundant.I will check it.","commit_id":"5bec18759f39ea51f9d129dc8750fc8b442a73fd"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"c2c0b1df6efee3b1ecec4f3a0562ba9d538267cd","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            user\u003dself._get_cached_client(user),"},{"line_number":183,"context_line":"            tenant_uuid\u003duser and user[\"tenant_id\"])"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":186,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":187,"context_line":"            self._delete_single_resource(manager)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"ba2be162_8e01dbb1","line":186,"range":{"start_line":185,"start_character":35,"end_line":186,"end_character":69},"updated":"2017-03-03 10:14:37.000000000","message":"name_matches_object should use task_id https://github.com/openstack/rally/blob/master/rally/common/utils.py#L350-L351\n\nin order to find resources created by the task.","commit_id":"5bec18759f39ea51f9d129dc8750fc8b442a73fd"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"79349ef8e8dbf19ae077bfc0d79d2cd21ee15b90","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            user\u003dself._get_cached_client(user),"},{"line_number":183,"context_line":"            tenant_uuid\u003duser and user[\"tenant_id\"])"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":186,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":187,"context_line":"            self._delete_single_resource(manager)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"ba2be162_0c8ea5cf","line":186,"range":{"start_line":185,"start_character":35,"end_line":186,"end_character":69},"in_reply_to":"ba2be162_8e01dbb1","updated":"2017-03-04 17:02:10.000000000","message":"Thanks, you found it. I was planning use a another patch to do it. Now, I changed my mind, I would fix it:)","commit_id":"5bec18759f39ea51f9d129dc8750fc8b442a73fd"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"94d7f24000b5e6d6403eedb7c7b35281b587d1f1","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            user\u003dself._get_cached_client(user),"},{"line_number":183,"context_line":"            tenant_uuid\u003duser and user[\"tenant_id\"])"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":186,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":187,"context_line":"            self._delete_single_resource(manager)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":32,"id":"ba2be162_50292b36","line":186,"range":{"start_line":185,"start_character":35,"end_line":186,"end_character":69},"in_reply_to":"ba2be162_8e01dbb1","updated":"2017-03-03 17:08:34.000000000","message":"good catch","commit_id":"5bec18759f39ea51f9d129dc8750fc8b442a73fd"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"e4775eb068cc509f4c29d598875143620ed12a9f","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            tenant_uuid\u003duser and user[\"tenant_id\"])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":182,"context_line":"        if manager.name() \u003d\u003d \"\" or nameGeneratorMixin.name_matches_object("},{"line_number":183,"context_line":"                manager.name(), self.task_id, exact\u003dFalse):"},{"line_number":184,"context_line":"            self._delete_single_resource(manager)"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_77b2734d","line":182,"range":{"start_line":182,"start_character":8,"end_line":182,"end_character":31},"updated":"2017-03-06 09:39:52.000000000","message":"I think it should be removed now. Since we implemented a proper name method for all managers.","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8fcb49b2ee4a3df5f1ff2cbf2682f9ad5305afcc","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            tenant_uuid\u003duser and user[\"tenant_id\"])"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":182,"context_line":"        if manager.name() \u003d\u003d \"\" or nameGeneratorMixin.name_matches_object("},{"line_number":183,"context_line":"                manager.name(), self.task_id, exact\u003dFalse):"},{"line_number":184,"context_line":"            self._delete_single_resource(manager)"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_0dcdaa30","line":182,"range":{"start_line":182,"start_character":8,"end_line":182,"end_character":31},"in_reply_to":"ba2be162_77b2734d","updated":"2017-03-06 10:07:30.000000000","message":"It looks like it is needed for resources like floating ips which doesn\u0027t have  name property","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"e4775eb068cc509f4c29d598875143620ed12a9f","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":182,"context_line":"        if manager.name() \u003d\u003d \"\" or nameGeneratorMixin.name_matches_object("},{"line_number":183,"context_line":"                manager.name(), self.task_id, exact\u003dFalse):"},{"line_number":184,"context_line":"            self._delete_single_resource(manager)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_97e5270a","line":183,"range":{"start_line":183,"start_character":32,"end_line":183,"end_character":44},"updated":"2017-03-06 09:39:52.000000000","message":"Well, in my previous comment, I suggested adding task_id, not replacing superclass. We need to use both superclass and task_id in order to find resources that were created by particular task with particular RESOURCE_NAME_FORMAT that is stored in each plugin class.","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"1b552999d7049b6ab66380f3bdccb0d4183a24cc","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":182,"context_line":"        if manager.name() \u003d\u003d \"\" or nameGeneratorMixin.name_matches_object("},{"line_number":183,"context_line":"                manager.name(), self.task_id, exact\u003dFalse):"},{"line_number":184,"context_line":"            self._delete_single_resource(manager)"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_914d30c6","line":183,"range":{"start_line":183,"start_character":32,"end_line":183,"end_character":44},"in_reply_to":"ba2be162_97e5270a","updated":"2017-03-06 11:16:06.000000000","message":"Ok, I didn\u0027t get entire info:(. I remember my task in https://trello.com/c/wheJgDun/249-cleanup-remove-only-those-resources-which-were-created-by-rally. So~~","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a6f5cc8de9259c045c711cc043cfe3f8655aa47e","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":186,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":187,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":188,"context_line":"            if not nameGeneratorMixin.name_matches_object(manager.name(),"},{"line_number":189,"context_line":"                                                          self.task_id,"},{"line_number":190,"context_line":"                                                          exact\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba2be162_be5ca6f1","line":187,"range":{"start_line":187,"start_character":16,"end_line":187,"end_character":69},"updated":"2017-03-06 20:41:56.000000000","message":"we should transmit task id here","commit_id":"f1b2bb8089e0dd1a07c69407226455ad8b791a24"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a6f5cc8de9259c045c711cc043cfe3f8655aa47e","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":186,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":187,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":188,"context_line":"            if not nameGeneratorMixin.name_matches_object(manager.name(),"},{"line_number":189,"context_line":"                                                          self.task_id,"},{"line_number":190,"context_line":"                                                          exact\u003dFalse):"},{"line_number":191,"context_line":"                self._delete_single_resource(manager)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"ba2be162_9e51a2db","line":190,"range":{"start_line":188,"start_character":12,"end_line":190,"end_character":71},"updated":"2017-03-06 20:41:56.000000000","message":"why we need that check?","commit_id":"f1b2bb8089e0dd1a07c69407226455ad8b791a24"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"f705f06ebbd084810fb3c1a7dbed618c45776c0d","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":186,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":187,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":188,"context_line":"            if not nameGeneratorMixin.name_matches_object(manager.name(),"},{"line_number":189,"context_line":"                                                          self.task_id,"},{"line_number":190,"context_line":"                                                          exact\u003dFalse):"},{"line_number":191,"context_line":"                self._delete_single_resource(manager)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"9a30ddce_fba0e0a7","line":190,"range":{"start_line":188,"start_character":12,"end_line":190,"end_character":71},"in_reply_to":"9a30ddce_7c79532f","updated":"2017-03-07 12:08:13.000000000","message":"Finally, I understand what you saied and it is be done:)","commit_id":"f1b2bb8089e0dd1a07c69407226455ad8b791a24"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"2aafd0888e8c0ff327b2e036b1be64cced6be3b8","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":186,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":187,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":188,"context_line":"            if not nameGeneratorMixin.name_matches_object(manager.name(),"},{"line_number":189,"context_line":"                                                          self.task_id,"},{"line_number":190,"context_line":"                                                          exact\u003dFalse):"},{"line_number":191,"context_line":"                self._delete_single_resource(manager)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"9a30ddce_7c79532f","line":190,"range":{"start_line":188,"start_character":12,"end_line":190,"end_character":71},"in_reply_to":"9a30ddce_e48cd337","updated":"2017-03-07 07:51:11.000000000","message":"I know what task you are solving:) \n\nrutils.name_matches_object(manager.name(), *self.resource_classes, exact\u003dFalse, task_id\u003dself.task_id) from L186 should filter all resources, so one more check looks redundant.","commit_id":"f1b2bb8089e0dd1a07c69407226455ad8b791a24"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"1be58f0943f09e08867ff9677411ec76ac3589b3","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        nameGeneratorMixin \u003d rutils.RandomNameGeneratorMixin"},{"line_number":186,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":187,"context_line":"                manager.name(), *self.resource_classes, exact\u003dFalse):"},{"line_number":188,"context_line":"            if not nameGeneratorMixin.name_matches_object(manager.name(),"},{"line_number":189,"context_line":"                                                          self.task_id,"},{"line_number":190,"context_line":"                                                          exact\u003dFalse):"},{"line_number":191,"context_line":"                self._delete_single_resource(manager)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def exterminate(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"9a30ddce_e48cd337","line":190,"range":{"start_line":188,"start_character":12,"end_line":190,"end_character":71},"in_reply_to":"ba2be162_9e51a2db","updated":"2017-03-07 04:27:35.000000000","message":"Andrey, I do this check because of this task. https://trello.com/c/wheJgDun/249-cleanup-remove-only-those-resources-which-were-created-by-rally.","commit_id":"f1b2bb8089e0dd1a07c69407226455ad8b791a24"},{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"6811450a0d3f645a8db8a9640803b517cb44dbb2","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":186,"context_line":"                manager.name(), *self.resource_classes,"},{"line_number":187,"context_line":"                task_id\u003dself.task_id, exact\u003dFalse):"},{"line_number":188,"context_line":"                self._delete_single_resource(manager)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def exterminate(self):"},{"line_number":191,"context_line":"        \"\"\"Delete all resources for passed users, admin and resource_mgr.\"\"\""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a30ddce_9bd8c4f1","line":188,"range":{"start_line":188,"start_character":16,"end_line":188,"end_character":53},"updated":"2017-03-07 12:14:08.000000000","message":"please fix indentation","commit_id":"8283cb0eb2efa105ce7f5b5bcc73da276d9be7b9"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"cb25152a642bbf2934191ea5d425736fe5e62188","unresolved":false,"context_lines":[{"line_number":185,"context_line":"        if manager.name() \u003d\u003d \"\" or rutils.name_matches_object("},{"line_number":186,"context_line":"                manager.name(), *self.resource_classes,"},{"line_number":187,"context_line":"                task_id\u003dself.task_id, exact\u003dFalse):"},{"line_number":188,"context_line":"                self._delete_single_resource(manager)"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    def exterminate(self):"},{"line_number":191,"context_line":"        \"\"\"Delete all resources for passed users, admin and resource_mgr.\"\"\""}],"source_content_type":"text/x-python","patch_set":35,"id":"9a30ddce_bb810892","line":188,"range":{"start_line":188,"start_character":16,"end_line":188,"end_character":53},"in_reply_to":"9a30ddce_9bd8c4f1","updated":"2017-03-07 12:17:39.000000000","message":"Done","commit_id":"8283cb0eb2efa105ce7f5b5bcc73da276d9be7b9"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f159110f9cf9a163783ce9ef8b7aea0728491446","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.admin \u003d admin"},{"line_number":51,"context_line":"        self.users \u003d users or []"},{"line_number":52,"context_line":"        self.api_versions \u003d api_versions"},{"line_number":53,"context_line":"        self.resource_classes \u003d resource_classes or [plugin.Plugin]"},{"line_number":54,"context_line":"        self.task_id \u003d task_id"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _get_cached_client(self, user):"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_630c4695","line":53,"range":{"start_line":53,"start_character":53,"end_line":53,"end_character":66},"updated":"2017-03-07 13:32:26.000000000","message":"based on traces in logs, plugin.Plugin doesn\u0027t have a proper variables for filtering. We need to replace it by https://github.com/openstack/rally/blob/master/rally/common/utils.py#L242","commit_id":"bc8b5b1f0800ad63c62846cebfe9179266b505b4"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"7e6498fc25125d7ce0c4deb06336b5d4038f1559","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"def cleanup(names\u003dNone, admin_required\u003dNone, admin\u003dNone, users\u003dNone,"},{"line_number":255,"context_line":"            api_versions\u003dNone, superclass\u003dplugin.Plugin, task_id\u003dNone):"},{"line_number":256,"context_line":"    \"\"\"Generic cleaner."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    This method goes through all plugins. Filter those and left only plugins"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_f849b9d1","line":255,"range":{"start_line":255,"start_character":31,"end_line":255,"end_character":55},"updated":"2017-03-07 15:37:59.000000000","message":"I think change this param to `superclass\u003drutils.RandomNameGeneratorMixin` would be better","commit_id":"bc8b5b1f0800ad63c62846cebfe9179266b505b4"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7c2eaa1b152a96097ae10f6af2ce094d2ee72fc4","unresolved":false,"context_lines":[{"line_number":252,"context_line":""},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"def cleanup(names\u003dNone, admin_required\u003dNone, admin\u003dNone, users\u003dNone,"},{"line_number":255,"context_line":"            api_versions\u003dNone, superclass\u003dplugin.Plugin, task_id\u003dNone):"},{"line_number":256,"context_line":"    \"\"\"Generic cleaner."},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    This method goes through all plugins. Filter those and left only plugins"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_ec8d7e7c","line":255,"range":{"start_line":255,"start_character":31,"end_line":255,"end_character":55},"in_reply_to":"9a30ddce_f849b9d1","updated":"2017-03-07 15:47:54.000000000","message":"It will not fix an issue. Contexts transmits here their own classes, so that default value is not actually used:)\n\nIn the context of disaster cleanup (non-implemented feature that will able to discover resources created by particular task),  `superclass\u003drutils.RandomNameGeneratorMixin` looks like more right default value from technical point of view, but since we have a check at L286 (we can\u0027t remove it since `superclass` argument can accept everything) it is not a critical thing.","commit_id":"bc8b5b1f0800ad63c62846cebfe9179266b505b4"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"f159110f9cf9a163783ce9ef8b7aea0728491446","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                       Scenario resources."},{"line_number":283,"context_line":"    :param task_id: The UUID of task"},{"line_number":284,"context_line":"    \"\"\""},{"line_number":285,"context_line":"    resource_classes \u003d [cls for cls in discover.itersubclasses(superclass)"},{"line_number":286,"context_line":"                        if issubclass(cls, rutils.RandomNameGeneratorMixin)]"},{"line_number":287,"context_line":"    for manager in find_resource_managers(names, admin_required):"},{"line_number":288,"context_line":"        LOG.debug(\"Cleaning up %(service)s %(resource)s objects\" %"},{"line_number":289,"context_line":"                  {\"service\": manager._service,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_232b2eed","line":286,"range":{"start_line":285,"start_character":4,"end_line":286,"end_character":76},"updated":"2017-03-07 13:32:26.000000000","message":"While checking logs [*] I discovered discover.itersubclasses doesn\u0027t return superclass itself. It makes unusable method `cleanup` for all contexts. Let\u0027s add an additional check:\n\n    resource_classes \u003d [...] # keep it as it was\n    if not resource_classes and issubclass(superclass, rutils.RandomNameGeneratorMixin):\n        resource_classes\n\n[*] - http://logs.openstack.org/40/275340/36/check/gate-rally-dsvm-rally-heat-nv/d3cf2a9/console.html#_2017-03-07_12_45_41_955600","commit_id":"bc8b5b1f0800ad63c62846cebfe9179266b505b4"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"8a0a4a515ef69dd836df235fb55d95015c3d3f17","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                       Scenario resources."},{"line_number":283,"context_line":"    :param task_id: The UUID of task"},{"line_number":284,"context_line":"    \"\"\""},{"line_number":285,"context_line":"    resource_classes \u003d [cls for cls in discover.itersubclasses(superclass)"},{"line_number":286,"context_line":"                        if issubclass(cls, rutils.RandomNameGeneratorMixin)]"},{"line_number":287,"context_line":"    for manager in find_resource_managers(names, admin_required):"},{"line_number":288,"context_line":"        LOG.debug(\"Cleaning up %(service)s %(resource)s objects\" %"},{"line_number":289,"context_line":"                  {\"service\": manager._service,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_fd20cbf9","line":286,"range":{"start_line":285,"start_character":4,"end_line":286,"end_character":76},"in_reply_to":"9a30ddce_232b2eed","updated":"2017-03-07 15:18:28.000000000","message":"not resource_classes?","commit_id":"bc8b5b1f0800ad63c62846cebfe9179266b505b4"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"d0b12c490ac1e8c4a51cc6e61e1b01da521843b4","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                       Scenario resources."},{"line_number":283,"context_line":"    :param task_id: The UUID of task"},{"line_number":284,"context_line":"    \"\"\""},{"line_number":285,"context_line":"    resource_classes \u003d [cls for cls in discover.itersubclasses(superclass)"},{"line_number":286,"context_line":"                        if issubclass(cls, rutils.RandomNameGeneratorMixin)]"},{"line_number":287,"context_line":"    for manager in find_resource_managers(names, admin_required):"},{"line_number":288,"context_line":"        LOG.debug(\"Cleaning up %(service)s %(resource)s objects\" %"},{"line_number":289,"context_line":"                  {\"service\": manager._service,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_2f306856","line":286,"range":{"start_line":285,"start_character":4,"end_line":286,"end_character":76},"in_reply_to":"9a30ddce_232b2eed","updated":"2017-03-07 16:10:37.000000000","message":"oops, I did not finish writing an additional check:\n\n    resource_classes \u003d [...] # keep it as it was\n    if not resource_classes and issubclass(superclass, rutils.RandomNameGeneratorMixin):\n        resource_classes.append(superclass)\n\n\u003e not resource_classes?\n\nYes. So the logic is next: \n\n1) if some base class is transmitted, we will find all subclasses which are inheritors of RandomNameGeneratorMixin - find all subclasses that have custom resource name templates\n\n2) if some specific class is transmitted(for example specifc Context), `discover.itersubclasses(superclass)` will return nothing and in this case we need to use that specific class as an resource_class","commit_id":"bc8b5b1f0800ad63c62846cebfe9179266b505b4"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"43927e27e2f5f80dbd9c98cdf638aabcc5424544","unresolved":false,"context_lines":[{"line_number":282,"context_line":"                       Scenario resources."},{"line_number":283,"context_line":"    :param task_id: The UUID of task"},{"line_number":284,"context_line":"    \"\"\""},{"line_number":285,"context_line":"    resource_classes \u003d [cls for cls in discover.itersubclasses(superclass)"},{"line_number":286,"context_line":"                        if issubclass(cls, rutils.RandomNameGeneratorMixin)]"},{"line_number":287,"context_line":"    for manager in find_resource_managers(names, admin_required):"},{"line_number":288,"context_line":"        LOG.debug(\"Cleaning up %(service)s %(resource)s objects\" %"},{"line_number":289,"context_line":"                  {\"service\": manager._service,"}],"source_content_type":"text/x-python","patch_set":36,"id":"9a30ddce_e21ae76d","line":286,"range":{"start_line":285,"start_character":4,"end_line":286,"end_character":76},"in_reply_to":"9a30ddce_2f306856","updated":"2017-03-07 16:16:11.000000000","message":"make sense.","commit_id":"bc8b5b1f0800ad63c62846cebfe9179266b505b4"}],"rally/plugins/openstack/cleanup/resources.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":184,"context_line":"@base.resource(\"nova\", \"server_groups\", order\u003dnext(_nova_order),"},{"line_number":185,"context_line":"               tenant_resource\u003dTrue)"},{"line_number":186,"context_line":"class NovaServerGroups(base.ResourceManager):"},{"line_number":187,"context_line":"    def list(self):"},{"line_number":188,"context_line":"        return [r for r in self._manager().list()"},{"line_number":189,"context_line":"                if utils.name_matches_object(r.name, nova_utils.NovaScenario)]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"@base.resource(\"nova\", \"floating_ips\", order\u003dnext(_nova_order))"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_423cb62f","line":189,"range":{"start_line":187,"start_character":4,"end_line":189,"end_character":78},"updated":"2017-02-28 15:25:17.000000000","message":"it is not needed anymore","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":184,"context_line":"@base.resource(\"nova\", \"server_groups\", order\u003dnext(_nova_order),"},{"line_number":185,"context_line":"               tenant_resource\u003dTrue)"},{"line_number":186,"context_line":"class NovaServerGroups(base.ResourceManager):"},{"line_number":187,"context_line":"    def list(self):"},{"line_number":188,"context_line":"        return [r for r in self._manager().list()"},{"line_number":189,"context_line":"                if utils.name_matches_object(r.name, nova_utils.NovaScenario)]"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"@base.resource(\"nova\", \"floating_ips\", order\u003dnext(_nova_order))"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_6e2504aa","line":189,"range":{"start_line":187,"start_character":4,"end_line":189,"end_character":78},"in_reply_to":"ba2be162_423cb62f","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        delete_method(self.id())"},{"line_number":893,"context_line":""},{"line_number":894,"context_line":"    def list(self):"},{"line_number":895,"context_line":"        # TODO(boris-42): We should use such stuff in all list commands."},{"line_number":896,"context_line":"        resources \u003d self._resource + \"s\""},{"line_number":897,"context_line":"        return getattr(self._manager(), \"list_%s\" % resources)()"},{"line_number":898,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_fceb91ae","line":895,"range":{"start_line":895,"start_character":8,"end_line":895,"end_character":72},"updated":"2017-02-28 15:25:17.000000000","message":"It is redundant comment after that change:)","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":892,"context_line":"        delete_method(self.id())"},{"line_number":893,"context_line":""},{"line_number":894,"context_line":"    def list(self):"},{"line_number":895,"context_line":"        # TODO(boris-42): We should use such stuff in all list commands."},{"line_number":896,"context_line":"        resources \u003d self._resource + \"s\""},{"line_number":897,"context_line":"        return getattr(self._manager(), \"list_%s\" % resources)()"},{"line_number":898,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_2c494260","line":895,"range":{"start_line":895,"start_character":8,"end_line":895,"end_character":72},"in_reply_to":"ba2be162_fceb91ae","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"}],"rally/plugins/openstack/context/cinder/volumes.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Volumes`\"))"},{"line_number":78,"context_line":"    def cleanup(self):"},{"line_number":79,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":80,"context_line":"        resource_manager.cleanup("},{"line_number":81,"context_line":"            names\u003d[\"cinder.volumes\"],"},{"line_number":82,"context_line":"            users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_b71cd278","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":71},"updated":"2017-02-28 15:25:17.000000000","message":"Since, self.__class__ is transmitted at L84, this comment is not valid anymore","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Volumes`\"))"},{"line_number":78,"context_line":"    def cleanup(self):"},{"line_number":79,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":80,"context_line":"        resource_manager.cleanup("},{"line_number":81,"context_line":"            names\u003d[\"cinder.volumes\"],"},{"line_number":82,"context_line":"            users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_0e82c852","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":71},"in_reply_to":"ba2be162_b71cd278","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"36ae381f27fc95696bfb9f08d53a20aaa1b89ed3","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            names\u003d[\"cinder.volumes\"],"},{"line_number":81,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":82,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":83,"context_line":"            superclass\u003dself.__class__,"},{"line_number":84,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"])"}],"source_content_type":"text/x-python","patch_set":39,"id":"9a30ddce_6c104f5a","line":83,"range":{"start_line":83,"start_character":23,"end_line":83,"end_character":37},"updated":"2017-03-09 15:00:15.000000000","message":"resources are created by cinder_utils.CinderScenario wich has own resource name template and it leads to the wrong filter of resources (all resources which were created in setup do not match superclass\u003dself.__class__). We need to transmit cinder_utils.CinderScenario as a superclass","commit_id":"b44bca7b9998b4e92ce3f7ad5cf2eb5b84b60591"}],"rally/plugins/openstack/context/cleanup/admin.py":[{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"e4775eb068cc509f4c29d598875143620ed12a9f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            admin\u003dself.context[\"admin\"],"},{"line_number":51,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":52,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":53,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"])"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_b26159d5","line":53,"updated":"2017-03-06 09:39:52.000000000","message":"This context intended to remove resources created by scenarios, hence it should call manager.cleanup with task_id and supeclass\u003dscenario.OpenStackScenario","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"1b552999d7049b6ab66380f3bdccb0d4183a24cc","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            admin\u003dself.context[\"admin\"],"},{"line_number":51,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":52,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":53,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"])"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_d1f08869","line":53,"in_reply_to":"ba2be162_adfbbe45","updated":"2017-03-06 11:16:06.000000000","message":"OK, I would fix it:)","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"8fcb49b2ee4a3df5f1ff2cbf2682f9ad5305afcc","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            admin\u003dself.context[\"admin\"],"},{"line_number":51,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":52,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":53,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"])"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_adfbbe45","line":53,"in_reply_to":"ba2be162_b26159d5","updated":"2017-03-06 10:07:30.000000000","message":"1) we should not hardcode to openstack here\n\n2) let\u0027s check resources from all plugins","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"608b1e5678f888218a9ade70cf239249037f4142","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            admin\u003dself.context[\"admin\"],"},{"line_number":51,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":52,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":53,"context_line":"            superclass\u003dself.__class__,"},{"line_number":54,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"])"}],"source_content_type":"text/x-python","patch_set":37,"id":"9a30ddce_0dae3a85","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":38},"updated":"2017-03-07 22:45:10.000000000","message":"it is needless. cleanup context should find all resources. If you transmit here self.__class__, it will not filter all resources, just resources which match template specified in that class.","commit_id":"df5fc23fbd6fc61005bdba093e9fe6bef9e513f2"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"baf08aa1c5616e3735eb02b92803b1caae598c62","unresolved":false,"context_lines":[{"line_number":50,"context_line":"            admin\u003dself.context[\"admin\"],"},{"line_number":51,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":52,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":53,"context_line":"            superclass\u003dself.__class__,"},{"line_number":54,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"])"}],"source_content_type":"text/x-python","patch_set":37,"id":"9a30ddce_b5b57032","line":53,"range":{"start_line":53,"start_character":12,"end_line":53,"end_character":38},"in_reply_to":"9a30ddce_0dae3a85","updated":"2017-03-08 00:56:27.000000000","message":"Thanks, I would recover the old code.","commit_id":"df5fc23fbd6fc61005bdba093e9fe6bef9e513f2"}],"rally/plugins/openstack/context/cleanup/user.py":[{"author":{"_account_id":19011,"name":"Anton Studenov","email":"tohin1332@gmail.com","username":"tohin"},"change_message_id":"e4775eb068cc509f4c29d598875143620ed12a9f","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            admin_required\u003dFalse,"},{"line_number":50,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":51,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":52,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"]"},{"line_number":53,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":33,"id":"ba2be162_d2b32d4b","line":52,"updated":"2017-03-06 09:39:52.000000000","message":"This context intended to remove resources created by scenarios, hence it should call manager.cleanup with task_id and supeclass\u003dscenario.OpenStackScenario","commit_id":"9e3cd4003b41f28a82e2916232041d2a8b274c2f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"608b1e5678f888218a9ade70cf239249037f4142","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            admin_required\u003dFalse,"},{"line_number":50,"context_line":"            users\u003dself.context.get(\"users\", []),"},{"line_number":51,"context_line":"            api_versions\u003dself.context[\"config\"].get(\"api_versions\"),"},{"line_number":52,"context_line":"            superclass\u003dself.__class__,"},{"line_number":53,"context_line":"            task_id\u003dself.context[\"task\"][\"uuid\"]"},{"line_number":54,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":37,"id":"9a30ddce_4db672dd","line":52,"range":{"start_line":52,"start_character":12,"end_line":52,"end_character":38},"updated":"2017-03-07 22:45:10.000000000","message":"same here","commit_id":"df5fc23fbd6fc61005bdba093e9fe6bef9e513f2"}],"rally/plugins/openstack/context/designate/zones.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Zones`\"))"},{"line_number":60,"context_line":"    def cleanup(self):"},{"line_number":61,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":62,"context_line":"        resource_manager.cleanup(names\u003d[\"designate.zones\"],"},{"line_number":63,"context_line":"                                 users\u003dself.context.get(\"users\", []),"},{"line_number":64,"context_line":"                                 superclass\u003dself.__class__)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_020e3e34","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":71},"updated":"2017-02-28 15:25:17.000000000","message":"not valid","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Zones`\"))"},{"line_number":60,"context_line":"    def cleanup(self):"},{"line_number":61,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":62,"context_line":"        resource_manager.cleanup(names\u003d[\"designate.zones\"],"},{"line_number":63,"context_line":"                                 users\u003dself.context.get(\"users\", []),"},{"line_number":64,"context_line":"                                 superclass\u003dself.__class__)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_ee52d4dc","line":61,"range":{"start_line":61,"start_character":8,"end_line":61,"end_character":71},"in_reply_to":"ba2be162_020e3e34","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"}],"rally/plugins/openstack/context/nova/keypairs.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `keypair`\"))"},{"line_number":58,"context_line":"    def cleanup(self):"},{"line_number":59,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":60,"context_line":"        resource_manager.cleanup(names\u003d[\"nova.keypairs\"],"},{"line_number":61,"context_line":"                                 users\u003dself.context.get(\"users\", []),"},{"line_number":62,"context_line":"                                 superclass\u003dself.__class__)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_175e7e45","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":71},"updated":"2017-02-28 15:25:17.000000000","message":"not-valid any more","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `keypair`\"))"},{"line_number":58,"context_line":"    def cleanup(self):"},{"line_number":59,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":60,"context_line":"        resource_manager.cleanup(names\u003d[\"nova.keypairs\"],"},{"line_number":61,"context_line":"                                 users\u003dself.context.get(\"users\", []),"},{"line_number":62,"context_line":"                                 superclass\u003dself.__class__)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_6e1424f5","line":59,"range":{"start_line":59,"start_character":8,"end_line":59,"end_character":71},"in_reply_to":"ba2be162_175e7e45","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"654ad029427a6174dcfaaae10732e60b11534c0d","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    def cleanup(self):"},{"line_number":60,"context_line":"        resource_manager.cleanup(names\u003d[\"nova.keypairs\"],"},{"line_number":61,"context_line":"                                 users\u003dself.context.get(\"users\", []),"},{"line_number":62,"context_line":"                                 superclass\u003dnova_utils.NovaScenario,"},{"line_number":63,"context_line":"                                 task_id\u003dself.context[\"task\"][\"uuid\"])"}],"source_content_type":"text/x-python","patch_set":40,"id":"9a30ddce_ecdfd566","line":62,"range":{"start_line":62,"start_character":44,"end_line":62,"end_character":68},"updated":"2017-03-09 17:58:04.000000000","message":"In this context we generate name using name pattern of this class (see L43), so superclass\u003dself.__class__ should used","commit_id":"747abf58f2e8d6f573f1700e614a67ff58267884"}],"rally/plugins/openstack/context/sahara/sahara_cluster.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Sahara Cluster`\"))"},{"line_number":178,"context_line":"    def cleanup(self):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":181,"context_line":"        resource_manager.cleanup(names\u003d[\"sahara.clusters\"],"},{"line_number":182,"context_line":"                                 users\u003dself.context.get(\"users\", []),"},{"line_number":183,"context_line":"                                 superclass\u003dself.__class__)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_621d3a66","line":180,"range":{"start_line":180,"start_character":8,"end_line":180,"end_character":71},"updated":"2017-02-28 15:25:17.000000000","message":"same here","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Sahara Cluster`\"))"},{"line_number":178,"context_line":"    def cleanup(self):"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":181,"context_line":"        resource_manager.cleanup(names\u003d[\"sahara.clusters\"],"},{"line_number":182,"context_line":"                                 users\u003dself.context.get(\"users\", []),"},{"line_number":183,"context_line":"                                 superclass\u003dself.__class__)"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_2ed86c53","line":180,"range":{"start_line":180,"start_character":8,"end_line":180,"end_character":71},"in_reply_to":"ba2be162_621d3a66","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"}],"rally/plugins/openstack/context/sahara/sahara_image.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Sahara Image`\"))"},{"line_number":127,"context_line":"    def cleanup(self):"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":130,"context_line":"        if self.context[\"sahara\"][\"need_image_cleanup\"]:"},{"line_number":131,"context_line":"            resource_manager.cleanup(names\u003d[\"glance.images\"],"},{"line_number":132,"context_line":"                                     users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_423756e3","line":129,"range":{"start_line":129,"start_character":8,"end_line":129,"end_character":71},"updated":"2017-02-28 15:25:17.000000000","message":"and here","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    @logging.log_task_wrapper(LOG.info, _(\"Exit context: `Sahara Image`\"))"},{"line_number":127,"context_line":"    def cleanup(self):"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":130,"context_line":"        if self.context[\"sahara\"][\"need_image_cleanup\"]:"},{"line_number":131,"context_line":"            resource_manager.cleanup(names\u003d[\"glance.images\"],"},{"line_number":132,"context_line":"                                     users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_cec8b077","line":129,"range":{"start_line":129,"start_character":8,"end_line":129,"end_character":71},"in_reply_to":"ba2be162_423756e3","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"}],"rally/plugins/openstack/context/sahara/sahara_input_data_sources.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        res_cleanup.SwiftContainer("},{"line_number":128,"context_line":"            resource\u003dself.context[\"sahara\"][\"container_name\"])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":131,"context_line":"        resource_manager.cleanup("},{"line_number":132,"context_line":"            names\u003d[\"sahara.%s\" % res for res in resources],"},{"line_number":133,"context_line":"            users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_a273b2b3","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":71},"updated":"2017-02-28 15:25:17.000000000","message":"you know what I\u0027m thinking about that comment:)","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        res_cleanup.SwiftContainer("},{"line_number":128,"context_line":"            resource\u003dself.context[\"sahara\"][\"container_name\"])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":131,"context_line":"        resource_manager.cleanup("},{"line_number":132,"context_line":"            names\u003d[\"sahara.%s\" % res for res in resources],"},{"line_number":133,"context_line":"            users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_2e94ec35","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":71},"in_reply_to":"ba2be162_a273b2b3","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"daaa94207c4be79c26281348025c1e8ea0a00029","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        res_cleanup.SwiftContainer("},{"line_number":128,"context_line":"            resource\u003dself.context[\"sahara\"][\"container_name\"])"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":131,"context_line":"        resource_manager.cleanup("},{"line_number":132,"context_line":"            names\u003d[\"sahara.%s\" % res for res in resources],"},{"line_number":133,"context_line":"            users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_c5642d4b","line":130,"range":{"start_line":130,"start_character":8,"end_line":130,"end_character":71},"in_reply_to":"ba2be162_a273b2b3","updated":"2017-02-28 16:38:31.000000000","message":"Let us finish this patch firstly:)","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"}],"rally/plugins/openstack/context/sahara/sahara_job_binaries.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    def cleanup(self):"},{"line_number":146,"context_line":"        resources \u003d [\"job_binary_internals\", \"job_binaries\"]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":149,"context_line":"        resource_manager.cleanup("},{"line_number":150,"context_line":"            names\u003d[\"sahara.%s\" % res for res in resources],"},{"line_number":151,"context_line":"            users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_426596df","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":71},"updated":"2017-02-28 15:25:17.000000000","message":"again","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    def cleanup(self):"},{"line_number":146,"context_line":"        resources \u003d [\"job_binary_internals\", \"job_binaries\"]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        # TODO(boris-42): Delete only resources created by this context"},{"line_number":149,"context_line":"        resource_manager.cleanup("},{"line_number":150,"context_line":"            names\u003d[\"sahara.%s\" % res for res in resources],"},{"line_number":151,"context_line":"            users\u003dself.context.get(\"users\", []),"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_a1cb8d71","line":148,"range":{"start_line":148,"start_character":8,"end_line":148,"end_character":71},"in_reply_to":"ba2be162_426596df","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"}],"rally/plugins/openstack/context/sahara/sahara_output_data_sources.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"31ae63fe9b6e746515cafdf09bc5d74dd4b295fc","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                for swift_object in ("},{"line_number":108,"context_line":"                    self.context[\"tenants\"][tenant_id][\"sahara\"][\"container\"]["},{"line_number":109,"context_line":"                        \"output_swift_objects\"]):"},{"line_number":110,"context_line":"                    res_cleanup.SwiftObject(swift_object[1])"},{"line_number":111,"context_line":"            res_cleanup.SwiftContainer("},{"line_number":112,"context_line":"                self.context[\"tenants\"][tenant_id].get("},{"line_number":113,"context_line":"                    \"sahara\", {}).get(\"container\", {}).get(\"name\"))"},{"line_number":114,"context_line":"        resources \u003d [\"data_sources\"]"},{"line_number":115,"context_line":"        resource_manager.cleanup("},{"line_number":116,"context_line":"            names\u003d[\"sahara.%s\" % res for res in resources],"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_2220a249","line":113,"range":{"start_line":110,"start_character":20,"end_line":113,"end_character":67},"updated":"2017-02-28 15:25:17.000000000","message":"these lines do nothing. we should call delete method at those created objects","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"},{"author":{"_account_id":22960,"name":"Hai Shi","email":"shihai1992@gmail.com","username":"haishi"},"change_message_id":"0a5f19a93cb5877a7945d4c113633af043b45943","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                for swift_object in ("},{"line_number":108,"context_line":"                    self.context[\"tenants\"][tenant_id][\"sahara\"][\"container\"]["},{"line_number":109,"context_line":"                        \"output_swift_objects\"]):"},{"line_number":110,"context_line":"                    res_cleanup.SwiftObject(swift_object[1])"},{"line_number":111,"context_line":"            res_cleanup.SwiftContainer("},{"line_number":112,"context_line":"                self.context[\"tenants\"][tenant_id].get("},{"line_number":113,"context_line":"                    \"sahara\", {}).get(\"container\", {}).get(\"name\"))"},{"line_number":114,"context_line":"        resources \u003d [\"data_sources\"]"},{"line_number":115,"context_line":"        resource_manager.cleanup("},{"line_number":116,"context_line":"            names\u003d[\"sahara.%s\" % res for res in resources],"}],"source_content_type":"text/x-python","patch_set":29,"id":"ba2be162_aead3c33","line":113,"range":{"start_line":110,"start_character":20,"end_line":113,"end_character":67},"in_reply_to":"ba2be162_2220a249","updated":"2017-03-01 16:01:16.000000000","message":"Done","commit_id":"c34d7af2401a24ce9df77e7f0196bf92651e273d"}]}
