)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"0c7f31be114aaf10be8b22177443a39b52268e4d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Srinivas Sakhamuri \u003csrini.openstack@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-29 08:38:20 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use glance wrapper nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Make nova to use glance wrapper while accessing glance. Fix"},{"line_number":10,"context_line":"cinder to use consistent way to access the image status"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba0121b8_1040e3a4","line":7,"updated":"2016-03-29 15:05:17.000000000","message":"This affects both nova and cinder.","commit_id":"2e1fc22e8898aa77fcd32e7b8229b6712e698f1a"},{"author":{"_account_id":12637,"name":"Srinivas Sakhamuri","email":"srini.openstack@gmail.com","username":"srsakhamuri"},"change_message_id":"b20d4f7c1717324249ff686f6597601975e5a002","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Srinivas Sakhamuri \u003csrini.openstack@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-29 08:38:20 -0600"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Use glance wrapper nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Make nova to use glance wrapper while accessing glance. Fix"},{"line_number":10,"context_line":"cinder to use consistent way to access the image status"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"ba0121b8_5c0a74d3","line":7,"in_reply_to":"ba0121b8_1040e3a4","updated":"2016-03-29 15:57:00.000000000","message":"cinder/utils doesn\u0027t use glance v2 wrapper yet, but may have to according to your other comment","commit_id":"2e1fc22e8898aa77fcd32e7b8229b6712e698f1a"}],"rally/plugins/openstack/scenarios/cinder/utils.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"0c7f31be114aaf10be8b22177443a39b52268e4d","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        image \u003d bench_utils.wait_for("},{"line_number":240,"context_line":"            image,"},{"line_number":241,"context_line":"            ready_statuses\u003d[\"active\"],"},{"line_number":242,"context_line":"            update_resource\u003dself.get_image,"},{"line_number":243,"context_line":"            timeout\u003dCONF.benchmark.glance_image_create_timeout,"},{"line_number":244,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_create_poll_interval"},{"line_number":245,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_50dc1b12","line":242,"updated":"2016-03-29 15:05:17.000000000","message":"A better approach would be to make the _update_image() function in the glance v2 wrapper public, and add it to the main glance wrapper interface. We don\u0027t want to be reinventing that function every time we need to use it.","commit_id":"2e1fc22e8898aa77fcd32e7b8229b6712e698f1a"},{"author":{"_account_id":12637,"name":"Srinivas Sakhamuri","email":"srini.openstack@gmail.com","username":"srsakhamuri"},"change_message_id":"b20d4f7c1717324249ff686f6597601975e5a002","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        image \u003d bench_utils.wait_for("},{"line_number":240,"context_line":"            image,"},{"line_number":241,"context_line":"            ready_statuses\u003d[\"active\"],"},{"line_number":242,"context_line":"            update_resource\u003dself.get_image,"},{"line_number":243,"context_line":"            timeout\u003dCONF.benchmark.glance_image_create_timeout,"},{"line_number":244,"context_line":"            check_interval\u003dCONF.benchmark.glance_image_create_poll_interval"},{"line_number":245,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_1ce59c36","line":242,"in_reply_to":"ba0121b8_50dc1b12","updated":"2016-03-29 15:57:00.000000000","message":"Initially I liked your proposal on \"deobfuscate patch\" about using client directly without the wrapper, only problem here is update_resource takes a function that operates on image.id. I tried with lambda but couldn\u0027t figure how to mock that in unit tests. \n\nBut I agree with your point, will make this change.","commit_id":"2e1fc22e8898aa77fcd32e7b8229b6712e698f1a"}],"rally/plugins/openstack/wrappers/glance.py":[{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cc794e375628387e30cf3eaefb081c70ef887b21","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @abc.abstractmethod"},{"line_number":64,"context_line":"    def get_image(self, image):"},{"line_number":65,"context_line":"        \"\"\"Refresh an image from an image object.\"\"\""},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    @abc.abstractmethod"},{"line_number":68,"context_line":"    def create_image(self, container_format, image_location, disk_format):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_ccf8844c","line":65,"updated":"2016-03-29 22:42:58.000000000","message":"If we\u0027re changing get_image() to be used in wait_for_*() functions, this docstring needs to be updated, as do any other uses of get_image().","commit_id":"56e9345f06974d6a79d0fd260e1dbbe3038c0493"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"cc794e375628387e30cf3eaefb081c70ef887b21","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        try:"},{"line_number":136,"context_line":"            return self.client.images.get(image.id)"},{"line_number":137,"context_line":"        except glance_exc.HTTPNotFound:"},{"line_number":138,"context_line":"            raise exceptions.GetResourceNotFound(resource\u003dimage)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def _update_image(self, image):"},{"line_number":141,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba0121b8_8c85ecae","line":138,"updated":"2016-03-29 22:42:58.000000000","message":"get_image() is now identical to _update_image(). These should be deduplicated.","commit_id":"56e9345f06974d6a79d0fd260e1dbbe3038c0493"},{"author":{"_account_id":12637,"name":"Srinivas Sakhamuri","email":"srini.openstack@gmail.com","username":"srsakhamuri"},"change_message_id":"458460ab625fef13f22f010da606496a0565f02c","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.client \u003d client"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @abc.abstractmethod"},{"line_number":64,"context_line":"    def update_image(self, image):"},{"line_number":65,"context_line":"        \"\"\"Given an image object, update it."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        Must raise rally.exceptions.GetResourceNotFound if the"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a061dce_f8717677","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":20},"updated":"2016-04-06 15:41:37.000000000","message":"I like get_image better since it is essentially a read operation. update_image is a bit confusing for what it is doing.","commit_id":"f8452cf3130461b5d65110946aa81260850158a9"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"3137e724d0a861a08b9b3877b8a907503589e171","unresolved":false,"context_lines":[{"line_number":61,"context_line":"        self.client \u003d client"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    @abc.abstractmethod"},{"line_number":64,"context_line":"    def update_image(self, image):"},{"line_number":65,"context_line":"        \"\"\"Given an image object, update it."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        Must raise rally.exceptions.GetResourceNotFound if the"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_3c60ec00","line":64,"range":{"start_line":64,"start_character":8,"end_line":64,"end_character":20},"in_reply_to":"9a061dce_f8717677","updated":"2016-04-14 16:24:31.000000000","message":"agreed with you.","commit_id":"f8452cf3130461b5d65110946aa81260850158a9"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"888cacc14a3339457d2420c29c8de1412b7f2a4d","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class GlanceV2Wrapper(GlanceWrapper):"},{"line_number":139,"context_line":"    def update_image(self, image):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            return self.client.images.get(image.id)"},{"line_number":142,"context_line":"        except glance_exc.HTTPNotFound:"},{"line_number":143,"context_line":"            raise exceptions.GetResourceNotFound(resource\u003dimage)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def create_image(self, container_format, image_location,"},{"line_number":146,"context_line":"                     disk_format, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_680dd03d","line":143,"range":{"start_line":139,"start_character":4,"end_line":143,"end_character":64},"updated":"2016-04-13 13:06:54.000000000","message":"why we cannot use get_from_manager for V2?","commit_id":"f8452cf3130461b5d65110946aa81260850158a9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"5d26729fa5391732ac804d57c86903600560acf5","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class GlanceV2Wrapper(GlanceWrapper):"},{"line_number":139,"context_line":"    def update_image(self, image):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            return self.client.images.get(image.id)"},{"line_number":142,"context_line":"        except glance_exc.HTTPNotFound:"},{"line_number":143,"context_line":"            raise exceptions.GetResourceNotFound(resource\u003dimage)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def create_image(self, container_format, image_location,"},{"line_number":146,"context_line":"                     disk_format, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_c4ce8cb3","line":143,"range":{"start_line":139,"start_character":4,"end_line":143,"end_character":64},"in_reply_to":"5a18252c_680dd03d","updated":"2016-04-13 14:16:38.000000000","message":"Guys, if we use get_from_manager, we will have auth failures when getting image status because the token may expire. In this case, at least we have a possibility to remove all cached clients sessions by self.clients.clear() or something like this. Example https://github.com/openstack/rally/blob/master/rally/verification/tempest/config.py#L381","commit_id":"f8452cf3130461b5d65110946aa81260850158a9"},{"author":{"_account_id":11748,"name":"Chris St. Pierre","email":"cstpierr@cisco.com","username":"stpierre"},"change_message_id":"f769bdbd9632b940acdaffd5300c8532aa6f07d3","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class GlanceV2Wrapper(GlanceWrapper):"},{"line_number":139,"context_line":"    def update_image(self, image):"},{"line_number":140,"context_line":"        try:"},{"line_number":141,"context_line":"            return self.client.images.get(image.id)"},{"line_number":142,"context_line":"        except glance_exc.HTTPNotFound:"},{"line_number":143,"context_line":"            raise exceptions.GetResourceNotFound(resource\u003dimage)"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def create_image(self, container_format, image_location,"},{"line_number":146,"context_line":"                     disk_format, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a18252c_300e9a3b","line":143,"range":{"start_line":139,"start_character":4,"end_line":143,"end_character":64},"in_reply_to":"5a18252c_c4ce8cb3","updated":"2016-04-13 14:54:18.000000000","message":"It\u0027s even more unambiguous than that: Glance v2 Image objects don\u0027t have a \u0027.manager\u0027 property. get_from_manager() just plain doesn\u0027t work in Glance v2.","commit_id":"f8452cf3130461b5d65110946aa81260850158a9"},{"author":{"_account_id":7428,"name":"Yaroslav Lobankov","email":"lobankovyv@gmail.com","username":"ylobankov"},"change_message_id":"c7e07e0ba188bc54b897b516905c9fe061486ec9","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        super(GlanceV1Wrapper, self).__init__(client, owner)"},{"line_number":87,"context_line":"        self._get_from_manager \u003d utils.get_from_manager()"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_image(self, image):"},{"line_number":90,"context_line":"        return self._get_from_manager(image)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    def create_image(self, container_format, image_location,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a122d0e_02829400","line":89,"updated":"2016-04-15 11:28:04.000000000","message":"Guys, sorry, but it will not work for \"verify\" stuff. What about using the get_image method like this:\n\n\n@six.add_metaclass(abc.ABCMeta)\nclass GlanceWrapper(object):\n    def __init__(self, client, owner):\n        self.owner \u003d owner\n        self.client \u003d client\n\n    @abc.abstractmethod\n    def create_image(self, container_format, image_location, disk_format):\n        \"\"\"Creates new image.\"\"\"\n\n    @abc.abstractmethod\n    def delete_image(self, image):\n        \"\"\"Deletes image.\"\"\"\n\n    @abc.abstractmethod\n    def list_images(self, **filters):\n        \"\"\"List images.\"\"\"\n    \n    def get_image(self, image):\n        try:\n            return self.client.images.get(image.id)\n        except glance_exc.HTTPNotFound:\n            raise exceptions.GetResourceNotFound(resource\u003dimage)\n\n\nThus, we will have less code and it will work for everything :)","commit_id":"bb73076f49b82546e7ed33bdc3946db254170bbe"}]}
