)]}'
{"cinder/tests/unit/volume/drivers/test_datera.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Datera"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_0e2f9689","line":1,"range":{"start_line":1,"start_character":15,"end_line":1,"end_character":16},"updated":"2020-02-07 12:48:58.000000000","message":"Is there a reason this is going back in time? :)","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Datera"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_c5ae2d30","line":1,"range":{"start_line":1,"start_character":15,"end_line":1,"end_character":16},"in_reply_to":"3fa7e38b_0e2f9689","updated":"2020-02-09 01:26:49.000000000","message":"Will fix.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Datera"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_9497ae3a","line":1,"range":{"start_line":1,"start_character":15,"end_line":1,"end_character":16},"in_reply_to":"3fa7e38b_c5ae2d30","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ae1e825b","line":16,"updated":"2020-02-07 12:48:58.000000000","message":"Since we only support py3 now, there shouldn\u0027t be any need to import __future__.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_54a5b6a0","line":16,"in_reply_to":"1fa4df85_20e70543","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"dbd96da5f5f0343445cc30336b2d26a90ebc947b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_5bc5555a","line":16,"in_reply_to":"1fa4df85_2a3289a8","updated":"2020-03-02 14:50:49.000000000","message":"This is only need for py2.5 and older, which none of our stable branches support.\n\nBackports are allowed to make adjustments for when there are changes that require it. We have discussed this and that is expected to happen, otherwise we can\u0027t move forward.\n\nBackports will not happen with this driver since the one in-tree does not work.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"655c7684d8c017cf968b0a5c5228ed27012251da","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_20e70543","line":16,"in_reply_to":"1fa4df85_5bc5555a","updated":"2020-03-02 17:22:04.000000000","message":"I thought we discussed this and agreed on it, isn\u0027t it?!?\n\nBoth Walter above and Brian in the offline email thread agreed that it\u0027s too onerous for driver maintainers like us to have different versions of the driver for python 3 vs python 2.\n\nFrom Brian Rosmaita\u0027s email:\n\u003e 1. You can keep py2 compat code; we are allowing it in drivers","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"963edbe38547afe7b5388d030001f2fc0b859167","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_a6ac5836","line":16,"in_reply_to":"3fa7e38b_25be2164","updated":"2020-02-09 15:46:48.000000000","message":"This is being proposed for the master branch, which is for ussuri. Py2 has been dropped. Remove this.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"1281698c870f2f951927b29df39d5715d83e9f92","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_2a3289a8","line":16,"in_reply_to":"3fa7e38b_a6ac5836","updated":"2020-03-02 12:34:10.000000000","message":"The problem with that statement is the policy we have in place for fixing bugs, must be against master and then cherry picked into the previous release.  By forcing driver maintainers to remove all backwards compatible code, this makes it even more difficult for driver maintainers to maintain their code.   \n\nThe majority of us users don\u0027t use the latest version of openstack and often stick with older versions due to the expense and risk of upgrading.   \n\nWe already agreed to allow driver maintainers to leave six usage in their drivers, why not this when it doesn\u0027t harm the codebase.   I think when we end of life py2 supported release, then we can talk about removing all backwards compatible code.  This is the first release that\u0027s py3 only.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_25be2164","line":16,"in_reply_to":"3fa7e38b_ae1e825b","updated":"2020-02-09 01:26:49.000000000","message":"Open stack might have transitioned to python 3, but the goal here is to make this driver be backward compatible to other versions of Openstack - we unfortunately have customers that are still on Newton. One of our design goals was to be able to support both python2 and python3 and we intend to keep it that way for as long as possible.\n\nThis applies to some other places too.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder import context"},{"line_number":24,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_6e308aeb","line":21,"updated":"2020-02-07 12:48:58.000000000","message":"Another side effect of py3-only is that we no longer want to use the third party mock library. \"from unittest import mock\" can be used instead.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import sys"},{"line_number":19,"context_line":"import uuid"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from cinder import context"},{"line_number":24,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_74a0f290","line":21,"in_reply_to":"3fa7e38b_6e308aeb","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"}],"cinder/volume/drivers/datera/datera_api21.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from cinder import utils"},{"line_number":37,"context_line":"import cinder.volume.drivers.datera.datera_common as datc"},{"line_number":38,"context_line":"from cinder.volume import volume_types"},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from cinder.volume import utils as volutils"},{"line_number":41,"context_line":"except ImportError:"},{"line_number":42,"context_line":"    from cinder.volume import volume_utils as volutils"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ce465e57","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":54},"updated":"2020-02-07 12:48:58.000000000","message":"Why is this needed?","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from cinder import utils"},{"line_number":37,"context_line":"import cinder.volume.drivers.datera.datera_common as datc"},{"line_number":38,"context_line":"from cinder.volume import volume_types"},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from cinder.volume import utils as volutils"},{"line_number":41,"context_line":"except ImportError:"},{"line_number":42,"context_line":"    from cinder.volume import volume_utils as volutils"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_34a6faac","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":54},"in_reply_to":"3fa7e38b_c6a95425","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from cinder import utils"},{"line_number":37,"context_line":"import cinder.volume.drivers.datera.datera_common as datc"},{"line_number":38,"context_line":"from cinder.volume import volume_types"},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from cinder.volume import utils as volutils"},{"line_number":41,"context_line":"except ImportError:"},{"line_number":42,"context_line":"    from cinder.volume import volume_utils as volutils"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_e5b32998","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":54},"in_reply_to":"3fa7e38b_ce465e57","updated":"2020-02-09 01:26:49.000000000","message":"Same as before, cinder changed this import in train I believe. Doing this allows us to run the same unmodified driver code against different versions of Openstack.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"963edbe38547afe7b5388d030001f2fc0b859167","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from cinder import utils"},{"line_number":37,"context_line":"import cinder.volume.drivers.datera.datera_common as datc"},{"line_number":38,"context_line":"from cinder.volume import volume_types"},{"line_number":39,"context_line":"try:"},{"line_number":40,"context_line":"    from cinder.volume import utils as volutils"},{"line_number":41,"context_line":"except ImportError:"},{"line_number":42,"context_line":"    from cinder.volume import volume_utils as volutils"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_c6a95425","line":42,"range":{"start_line":39,"start_character":0,"end_line":42,"end_character":54},"in_reply_to":"3fa7e38b_e5b32998","updated":"2020-02-09 15:46:48.000000000","message":"Not relevant with the current code base. Remove this.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def _create_volume_2_1(self, volume):"},{"line_number":61,"context_line":"        policies \u003d self._get_policies_for_resource(volume)"},{"line_number":62,"context_line":"        num_replicas \u003d int(policies[\u0027replica_count\u0027])"},{"line_number":63,"context_line":"        storage_name \u003d \u0027storage-1\u0027"},{"line_number":64,"context_line":"        volume_name \u003d \u0027volume-1\u0027"},{"line_number":65,"context_line":"        template \u003d policies[\u0027template\u0027]"},{"line_number":66,"context_line":"        placement \u003d policies[\u0027placement_mode\u0027]"},{"line_number":67,"context_line":"        ip_pool \u003d policies[\u0027ip_pool\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ae53e214","line":64,"range":{"start_line":63,"start_character":8,"end_line":64,"end_character":32},"updated":"2020-02-07 12:48:58.000000000","message":"It looks like these were based on configuration in the past. Is there a reason to hard code them now?","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"1dee28acda871fd1f2f3d5ae2442876b9344f881","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def _create_volume_2_1(self, volume):"},{"line_number":61,"context_line":"        policies \u003d self._get_policies_for_resource(volume)"},{"line_number":62,"context_line":"        num_replicas \u003d int(policies[\u0027replica_count\u0027])"},{"line_number":63,"context_line":"        storage_name \u003d \u0027storage-1\u0027"},{"line_number":64,"context_line":"        volume_name \u003d \u0027volume-1\u0027"},{"line_number":65,"context_line":"        template \u003d policies[\u0027template\u0027]"},{"line_number":66,"context_line":"        placement \u003d policies[\u0027placement_mode\u0027]"},{"line_number":67,"context_line":"        ip_pool \u003d policies[\u0027ip_pool\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_e86166d4","line":64,"range":{"start_line":63,"start_character":8,"end_line":64,"end_character":32},"in_reply_to":"1fa4df85_94cfae27","updated":"2020-03-09 22:19:47.000000000","message":"I actually checked this but forgot to comment, the object Hierarchy in Datera is app_instance:storage:volume, and for the OS cinder driver (as for other drivers), the relationship is 1:1:1. The name of the app_instance is the only one that matters in this case, the storage \u0026 volume names are hardcoded. There is a customer requirement to have them based on the app_instance name (which in turn is currently based on the OS volume name (volume[\u0027id\u0027]), but the fact that they are fixed is intended as of now.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def _create_volume_2_1(self, volume):"},{"line_number":61,"context_line":"        policies \u003d self._get_policies_for_resource(volume)"},{"line_number":62,"context_line":"        num_replicas \u003d int(policies[\u0027replica_count\u0027])"},{"line_number":63,"context_line":"        storage_name \u003d \u0027storage-1\u0027"},{"line_number":64,"context_line":"        volume_name \u003d \u0027volume-1\u0027"},{"line_number":65,"context_line":"        template \u003d policies[\u0027template\u0027]"},{"line_number":66,"context_line":"        placement \u003d policies[\u0027placement_mode\u0027]"},{"line_number":67,"context_line":"        ip_pool \u003d policies[\u0027ip_pool\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_94cfae27","line":64,"range":{"start_line":63,"start_character":8,"end_line":64,"end_character":32},"in_reply_to":"3fa7e38b_a5a9b125","updated":"2020-03-09 22:03:44.000000000","message":"@Virgil please have a look","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    def _create_volume_2_1(self, volume):"},{"line_number":61,"context_line":"        policies \u003d self._get_policies_for_resource(volume)"},{"line_number":62,"context_line":"        num_replicas \u003d int(policies[\u0027replica_count\u0027])"},{"line_number":63,"context_line":"        storage_name \u003d \u0027storage-1\u0027"},{"line_number":64,"context_line":"        volume_name \u003d \u0027volume-1\u0027"},{"line_number":65,"context_line":"        template \u003d policies[\u0027template\u0027]"},{"line_number":66,"context_line":"        placement \u003d policies[\u0027placement_mode\u0027]"},{"line_number":67,"context_line":"        ip_pool \u003d policies[\u0027ip_pool\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_a5a9b125","line":64,"range":{"start_line":63,"start_character":8,"end_line":64,"end_character":32},"in_reply_to":"3fa7e38b_ae53e214","updated":"2020-02-09 01:26:49.000000000","message":"Good catch, this is clearly a bug that needs fixing, probably testing/debugging leftover.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def _extend_volume_2_1(self, volume, new_size):"},{"line_number":117,"context_line":"        if volume[\u0027size\u0027] \u003e new_size:"},{"line_number":118,"context_line":"            LOG.warning(\"Volume size not extended due to original size being \""},{"line_number":119,"context_line":"                        \"greater or equal to new size.  Originial: \""},{"line_number":120,"context_line":"                        \"%(original)s, New: %(new)s\", {"},{"line_number":121,"context_line":"                            \u0027original\u0027: volume[\u0027size\u0027],"},{"line_number":122,"context_line":"                            \u0027new\u0027: new_size})"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_2e3ff2b2","line":119,"range":{"start_line":119,"start_character":33,"end_line":119,"end_character":41},"updated":"2020-02-07 12:48:58.000000000","message":"Looks like that check will not catch cases where it is equal. But I don\u0027t think this whole block is necessary. The size will definitely be larger than the original by the time it makes it to the driver.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def _extend_volume_2_1(self, volume, new_size):"},{"line_number":117,"context_line":"        if volume[\u0027size\u0027] \u003e new_size:"},{"line_number":118,"context_line":"            LOG.warning(\"Volume size not extended due to original size being \""},{"line_number":119,"context_line":"                        \"greater or equal to new size.  Originial: \""},{"line_number":120,"context_line":"                        \"%(original)s, New: %(new)s\", {"},{"line_number":121,"context_line":"                            \u0027original\u0027: volume[\u0027size\u0027],"},{"line_number":122,"context_line":"                            \u0027new\u0027: new_size})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_b4018a6c","line":119,"range":{"start_line":119,"start_character":33,"end_line":119,"end_character":41},"in_reply_to":"3fa7e38b_2e3ff2b2","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    def _extend_volume_2_1(self, volume, new_size):"},{"line_number":117,"context_line":"        if volume[\u0027size\u0027] \u003e new_size:"},{"line_number":118,"context_line":"            LOG.warning(\"Volume size not extended due to original size being \""},{"line_number":119,"context_line":"                        \"greater or equal to new size.  Originial: \""},{"line_number":120,"context_line":"                        \"%(original)s, New: %(new)s\", {"},{"line_number":121,"context_line":"                            \u0027original\u0027: volume[\u0027size\u0027],"},{"line_number":122,"context_line":"                            \u0027new\u0027: new_size})"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_659f39f6","line":119,"range":{"start_line":119,"start_character":33,"end_line":119,"end_character":41},"in_reply_to":"3fa7e38b_2e3ff2b2","updated":"2020-02-09 01:26:49.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            initiator_name \u003d \"OpenStack-{}\".format(str(uuid.uuid4())[:8])"},{"line_number":287,"context_line":"            initiator \u003d connector[\u0027initiator\u0027]"},{"line_number":288,"context_line":"            dinit \u003d None"},{"line_number":289,"context_line":"            # This is not possible to check in the 2.7 version of the product"},{"line_number":290,"context_line":"            # try:"},{"line_number":291,"context_line":"            #     # We want to make sure the initiator is created under the"},{"line_number":292,"context_line":"            #     # current tenant rather than using the /root one"},{"line_number":293,"context_line":"            #     dinit \u003d self.api.initiators.get(initiator, tenant\u003dtenant)"},{"line_number":294,"context_line":"            #     if dinit.tenant !\u003d tenant:"},{"line_number":295,"context_line":"            #         raise dexceptions.ApiNotFoundError("},{"line_number":296,"context_line":"            #             \"Initiator {} was not found under tenant {} \""},{"line_number":297,"context_line":"            #             \"[{} !\u003d {}]\".format("},{"line_number":298,"context_line":"            #                 initiator, tenant, dinit.tenant, tenant))"},{"line_number":299,"context_line":"            # except dexceptions.ApiNotFoundError:"},{"line_number":300,"context_line":"            data \u003d {\u0027id\u0027: initiator, \u0027name\u0027: initiator_name}"},{"line_number":301,"context_line":"            # Try and create the initiator"},{"line_number":302,"context_line":"            # If we get a conflict, ignore it"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_0e5d5615","line":299,"range":{"start_line":289,"start_character":12,"end_line":299,"end_character":50},"updated":"2020-02-07 12:48:58.000000000","message":"Is there some reason to keep this commented out code in here? I think this should get cleaned up.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            initiator_name \u003d \"OpenStack-{}\".format(str(uuid.uuid4())[:8])"},{"line_number":287,"context_line":"            initiator \u003d connector[\u0027initiator\u0027]"},{"line_number":288,"context_line":"            dinit \u003d None"},{"line_number":289,"context_line":"            # This is not possible to check in the 2.7 version of the product"},{"line_number":290,"context_line":"            # try:"},{"line_number":291,"context_line":"            #     # We want to make sure the initiator is created under the"},{"line_number":292,"context_line":"            #     # current tenant rather than using the /root one"},{"line_number":293,"context_line":"            #     dinit \u003d self.api.initiators.get(initiator, tenant\u003dtenant)"},{"line_number":294,"context_line":"            #     if dinit.tenant !\u003d tenant:"},{"line_number":295,"context_line":"            #         raise dexceptions.ApiNotFoundError("},{"line_number":296,"context_line":"            #             \"Initiator {} was not found under tenant {} \""},{"line_number":297,"context_line":"            #             \"[{} !\u003d {}]\".format("},{"line_number":298,"context_line":"            #                 initiator, tenant, dinit.tenant, tenant))"},{"line_number":299,"context_line":"            # except dexceptions.ApiNotFoundError:"},{"line_number":300,"context_line":"            data \u003d {\u0027id\u0027: initiator, \u0027name\u0027: initiator_name}"},{"line_number":301,"context_line":"            # Try and create the initiator"},{"line_number":302,"context_line":"            # If we get a conflict, ignore it"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_74f7928c","line":299,"range":{"start_line":289,"start_character":12,"end_line":299,"end_character":50},"in_reply_to":"3fa7e38b_0e5d5615","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":286,"context_line":"            initiator_name \u003d \"OpenStack-{}\".format(str(uuid.uuid4())[:8])"},{"line_number":287,"context_line":"            initiator \u003d connector[\u0027initiator\u0027]"},{"line_number":288,"context_line":"            dinit \u003d None"},{"line_number":289,"context_line":"            # This is not possible to check in the 2.7 version of the product"},{"line_number":290,"context_line":"            # try:"},{"line_number":291,"context_line":"            #     # We want to make sure the initiator is created under the"},{"line_number":292,"context_line":"            #     # current tenant rather than using the /root one"},{"line_number":293,"context_line":"            #     dinit \u003d self.api.initiators.get(initiator, tenant\u003dtenant)"},{"line_number":294,"context_line":"            #     if dinit.tenant !\u003d tenant:"},{"line_number":295,"context_line":"            #         raise dexceptions.ApiNotFoundError("},{"line_number":296,"context_line":"            #             \"Initiator {} was not found under tenant {} \""},{"line_number":297,"context_line":"            #             \"[{} !\u003d {}]\".format("},{"line_number":298,"context_line":"            #                 initiator, tenant, dinit.tenant, tenant))"},{"line_number":299,"context_line":"            # except dexceptions.ApiNotFoundError:"},{"line_number":300,"context_line":"            data \u003d {\u0027id\u0027: initiator, \u0027name\u0027: initiator_name}"},{"line_number":301,"context_line":"            # Try and create the initiator"},{"line_number":302,"context_line":"            # If we get a conflict, ignore it"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_055e8550","line":299,"range":{"start_line":289,"start_character":12,"end_line":299,"end_character":50},"in_reply_to":"3fa7e38b_0e5d5615","updated":"2020-02-09 01:26:49.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            # within the existing acl. eacli --\u003e existing acl initiator"},{"line_number":358,"context_line":"            eacli \u003d []"},{"line_number":359,"context_line":"            for acl in existing_acl[\u0027initiators\u0027]:"},{"line_number":360,"context_line":"                if attachment is not None and \\"},{"line_number":361,"context_line":"                   attachment.connector is not None and \\"},{"line_number":362,"context_line":"                   acl[\u0027path\u0027].split(\u0027/\u0027)[-1] \u003d\u003d \\"},{"line_number":363,"context_line":"                        attachment.connector[\u0027initiator\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ce941e9b","line":360,"range":{"start_line":360,"start_character":46,"end_line":360,"end_character":47},"updated":"2020-02-07 12:48:58.000000000","message":"We\u0027ve generally tried to avoid using \\ to span multiple lines. It would be better to wrap these if conditions in () instead.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":357,"context_line":"            # within the existing acl. eacli --\u003e existing acl initiator"},{"line_number":358,"context_line":"            eacli \u003d []"},{"line_number":359,"context_line":"            for acl in existing_acl[\u0027initiators\u0027]:"},{"line_number":360,"context_line":"                if attachment is not None and \\"},{"line_number":361,"context_line":"                   attachment.connector is not None and \\"},{"line_number":362,"context_line":"                   acl[\u0027path\u0027].split(\u0027/\u0027)[-1] \u003d\u003d \\"},{"line_number":363,"context_line":"                        attachment.connector[\u0027initiator\u0027]:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_14209ef6","line":360,"range":{"start_line":360,"start_character":46,"end_line":360,"end_character":47},"in_reply_to":"3fa7e38b_ce941e9b","updated":"2020-03-09 22:03:44.000000000","message":"Done\n\nI followed black\u0027s suggestion here.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        # managed, it must also be tenant A that makes this request."},{"line_number":543,"context_line":"        # This will be fixed in a later API update"},{"line_number":544,"context_line":"        existing_ref \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":545,"context_line":"        app_inst_name, _, _, _ \u003d datc._parse_vol_ref(existing_ref)"},{"line_number":546,"context_line":"        LOG.debug(\"Managing existing Datera volume %s  \""},{"line_number":547,"context_line":"                  \"Changing name to %s\","},{"line_number":548,"context_line":"                  datc.get_name(volume), existing_ref)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ce7dfe70","line":545,"range":{"start_line":545,"start_character":23,"end_line":545,"end_character":30},"updated":"2020-02-07 12:48:58.000000000","message":"We can\u0027t use _ to mark unused variables since that hides the i18n _() call. Double __ works well.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":542,"context_line":"        # managed, it must also be tenant A that makes this request."},{"line_number":543,"context_line":"        # This will be fixed in a later API update"},{"line_number":544,"context_line":"        existing_ref \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":545,"context_line":"        app_inst_name, _, _, _ \u003d datc._parse_vol_ref(existing_ref)"},{"line_number":546,"context_line":"        LOG.debug(\"Managing existing Datera volume %s  \""},{"line_number":547,"context_line":"                  \"Changing name to %s\","},{"line_number":548,"context_line":"                  datc.get_name(volume), existing_ref)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_b4842ad4","line":545,"range":{"start_line":545,"start_character":23,"end_line":545,"end_character":30},"in_reply_to":"3fa7e38b_ce7dfe70","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def _manage_existing_get_size_2_1(self, volume, existing_ref):"},{"line_number":563,"context_line":"        existing_ref \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":564,"context_line":"        app_inst_name, storage_inst_name, vol_name, _ \u003d datc._parse_vol_ref("},{"line_number":565,"context_line":"            existing_ref)"},{"line_number":566,"context_line":"        dummy_vol \u003d {\u0027id\u0027: app_inst_name,"},{"line_number":567,"context_line":"                     \u0027project_id\u0027: volume[\u0027project_id\u0027]}"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_8e77068f","line":564,"range":{"start_line":564,"start_character":52,"end_line":564,"end_character":53},"updated":"2020-02-07 12:48:58.000000000","message":"Same.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":561,"context_line":""},{"line_number":562,"context_line":"    def _manage_existing_get_size_2_1(self, volume, existing_ref):"},{"line_number":563,"context_line":"        existing_ref \u003d existing_ref[\u0027source-name\u0027]"},{"line_number":564,"context_line":"        app_inst_name, storage_inst_name, vol_name, _ \u003d datc._parse_vol_ref("},{"line_number":565,"context_line":"            existing_ref)"},{"line_number":566,"context_line":"        dummy_vol \u003d {\u0027id\u0027: app_inst_name,"},{"line_number":567,"context_line":"                     \u0027project_id\u0027: volume[\u0027project_id\u0027]}"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_546ff629","line":564,"range":{"start_line":564,"start_character":52,"end_line":564,"end_character":53},"in_reply_to":"3fa7e38b_8e77068f","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":733,"context_line":"        except (exception.VolumeTypeNotFound, exception.InvalidVolumeType):"},{"line_number":734,"context_line":"            found \u003d None"},{"line_number":735,"context_line":"        if not found:"},{"line_number":736,"context_line":"            msg \u003d _(\"Invalid volume type: %s\")"},{"line_number":737,"context_line":"            LOG.error(msg, self.image_type)"},{"line_number":738,"context_line":"            raise ValueError(\"Option datera_image_cache_volume_type_id must be\""},{"line_number":739,"context_line":"                             \" set to a valid volume_type id\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_2e861261","line":736,"range":{"start_line":736,"start_character":18,"end_line":736,"end_character":20},"updated":"2020-02-07 12:48:58.000000000","message":"This string is only used for logging, so it should not have translation.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":733,"context_line":"        except (exception.VolumeTypeNotFound, exception.InvalidVolumeType):"},{"line_number":734,"context_line":"            found \u003d None"},{"line_number":735,"context_line":"        if not found:"},{"line_number":736,"context_line":"            msg \u003d _(\"Invalid volume type: %s\")"},{"line_number":737,"context_line":"            LOG.error(msg, self.image_type)"},{"line_number":738,"context_line":"            raise ValueError(\"Option datera_image_cache_volume_type_id must be\""},{"line_number":739,"context_line":"                             \" set to a valid volume_type id\")"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_1475fef9","line":736,"range":{"start_line":736,"start_character":18,"end_line":736,"end_character":20},"in_reply_to":"3fa7e38b_2e861261","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":735,"context_line":"        if not found:"},{"line_number":736,"context_line":"            msg \u003d _(\"Invalid volume type: %s\")"},{"line_number":737,"context_line":"            LOG.error(msg, self.image_type)"},{"line_number":738,"context_line":"            raise ValueError(\"Option datera_image_cache_volume_type_id must be\""},{"line_number":739,"context_line":"                             \" set to a valid volume_type id\")"},{"line_number":740,"context_line":"        # Check image format"},{"line_number":741,"context_line":"        fmt \u003d image_meta.get(\u0027disk_format\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_4e910e9b","line":738,"range":{"start_line":738,"start_character":28,"end_line":738,"end_character":30},"updated":"2020-02-07 12:48:58.000000000","message":"Any exception strings that could be raised to the end user should have the _() translation marker on the string.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":735,"context_line":"        if not found:"},{"line_number":736,"context_line":"            msg \u003d _(\"Invalid volume type: %s\")"},{"line_number":737,"context_line":"            LOG.error(msg, self.image_type)"},{"line_number":738,"context_line":"            raise ValueError(\"Option datera_image_cache_volume_type_id must be\""},{"line_number":739,"context_line":"                             \" set to a valid volume_type id\")"},{"line_number":740,"context_line":"        # Check image format"},{"line_number":741,"context_line":"        fmt \u003d image_meta.get(\u0027disk_format\u0027, \u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_34703a08","line":738,"range":{"start_line":738,"start_character":28,"end_line":738,"end_character":30},"in_reply_to":"3fa7e38b_4e910e9b","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":920,"context_line":"                                  \"polling period\")"},{"line_number":921,"context_line":"                        raise"},{"line_number":922,"context_line":"                    LOG.debug(\"Failed to login to portal, retrying\")"},{"line_number":923,"context_line":"                    eventlet.sleep(2)"},{"line_number":924,"context_line":"            device_path \u003d attach_info[\u0027path\u0027]"},{"line_number":925,"context_line":"            yield device_path"},{"line_number":926,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_4ebfcefc","line":923,"range":{"start_line":923,"start_character":20,"end_line":923,"end_character":37},"updated":"2020-02-07 12:48:58.000000000","message":"I didn\u0027t see it, but just make sure this is being mocked in any unit tests so the test runs aren\u0027t including unnecessary delays.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":920,"context_line":"                                  \"polling period\")"},{"line_number":921,"context_line":"                        raise"},{"line_number":922,"context_line":"                    LOG.debug(\"Failed to login to portal, retrying\")"},{"line_number":923,"context_line":"                    eventlet.sleep(2)"},{"line_number":924,"context_line":"            device_path \u003d attach_info[\u0027path\u0027]"},{"line_number":925,"context_line":"            yield device_path"},{"line_number":926,"context_line":"        finally:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_14917ef1","line":923,"range":{"start_line":923,"start_character":20,"end_line":923,"end_character":37},"in_reply_to":"3fa7e38b_4ebfcefc","updated":"2020-03-09 22:03:44.000000000","message":"Done\n\nWent through the tests. Seems to be mocked out.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"}],"cinder/volume/drivers/datera/datera_api22.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from __future__ import absolute_import"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import ipaddress"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ce309eba","line":16,"range":{"start_line":16,"start_character":5,"end_line":16,"end_character":16},"updated":"2020-02-07 12:48:58.000000000","message":"Can be removed.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from cinder.image import image_utils"},{"line_number":36,"context_line":"from cinder import utils"},{"line_number":37,"context_line":"import cinder.volume.drivers.datera.datera_common as datc"},{"line_number":38,"context_line":"try:"},{"line_number":39,"context_line":"    from cinder.volume import utils as volutils"},{"line_number":40,"context_line":"except ImportError:"},{"line_number":41,"context_line":"    from cinder.volume import volume_utils as volutils"},{"line_number":42,"context_line":"from cinder.volume import volume_types"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_ee331ac2","line":41,"range":{"start_line":38,"start_character":0,"end_line":41,"end_character":53},"updated":"2020-02-07 12:48:58.000000000","message":"I don\u0027t think this is needed.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":48,"context_line":"API_VERSION \u003d \"2.2\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# The DateraAPI classes (2.1, 2.2) are enhanced by datera_common\u0027s lookup()"},{"line_number":52,"context_line":"# decorator which generates members run-time. Therefore on the class we disable"},{"line_number":53,"context_line":"# pylint\u0027s no-member check pylint: disable\u003dno-member"},{"line_number":54,"context_line":"class DateraApi(object):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_2e49322e","line":51,"updated":"2020-02-07 12:48:58.000000000","message":"Seems like a lot of duplication between the 21 and 22 api files. It would be great to refactor the common things out and just handle the specific differences in these files.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"API_VERSION \u003d \"2.2\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"# The DateraAPI classes (2.1, 2.2) are enhanced by datera_common\u0027s lookup()"},{"line_number":52,"context_line":"# decorator which generates members run-time. Therefore on the class we disable"},{"line_number":53,"context_line":"# pylint\u0027s no-member check pylint: disable\u003dno-member"},{"line_number":54,"context_line":"class DateraApi(object):"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_857115e2","line":51,"in_reply_to":"3fa7e38b_2e49322e","updated":"2020-02-09 01:26:49.000000000","message":"This is indeed a questionable design decision. As you can see, datera api2 (the file datera_api2.py is being removed as part of this commit. API2.1 is going to be deprecated soon too. We will find a better way to deal with this (and avoid code duplication) once we come up with a new API version.\n\nYou are correct, the differences between API2.1 and API2.2 are minimal, and this is not really the best way to deal with the differences.\n\nWe will address this once a new API will come into picture and we will deprecate api21 in the near future.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"}],"cinder/volume/drivers/datera/datera_common.py":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4f1fa50f9095eaff2e5ac8b591994f56df7100c6","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    return s"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"def lookup(func):"},{"line_number":93,"context_line":"    @functools.wraps(func)"},{"line_number":94,"context_line":"    def wrapper(*args, **kwargs):"},{"line_number":95,"context_line":"        obj \u003d args[0]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_366752bb","line":92,"updated":"2020-02-06 19:40:39.000000000","message":"would be a good idea to keep the inline docs for this method\nas the previous explanation was pretty detailed.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"}],"cinder/volume/drivers/datera/datera_iscsi.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":67,"context_line":"               help\u003d\"If set to \u0027Map\u0027 --\u003e OpenStack project ID will be mapped \""},{"line_number":68,"context_line":"                    \"implicitly to Datera tenant ID\\n\""},{"line_number":69,"context_line":"                    \"If set to \u0027None\u0027 --\u003e Datera tenant ID will not be used \""},{"line_number":70,"context_line":"                    \"during volume provisioning\\n\""},{"line_number":71,"context_line":"                    \"If set to anything else --\u003e Datera tenant ID will be the \""},{"line_number":72,"context_line":"                    \"provided value\"),"},{"line_number":73,"context_line":"    cfg.BoolOpt(\u0027datera_enable_image_cache\u0027,"},{"line_number":74,"context_line":"                default\u003dFalse,"},{"line_number":75,"context_line":"                help\u003d\"Set to True to enable Datera backend image caching\"),"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_0e6796ba","line":72,"range":{"start_line":69,"start_character":20,"end_line":72,"end_character":37},"updated":"2020-02-07 12:48:58.000000000","message":"Based on this, is that correct to change the default from None to \u0027\u0027?","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":66,"context_line":"               default\u003d\u0027\u0027,"},{"line_number":67,"context_line":"               help\u003d\"If set to \u0027Map\u0027 --\u003e OpenStack project ID will be mapped \""},{"line_number":68,"context_line":"                    \"implicitly to Datera tenant ID\\n\""},{"line_number":69,"context_line":"                    \"If set to \u0027None\u0027 --\u003e Datera tenant ID will not be used \""},{"line_number":70,"context_line":"                    \"during volume provisioning\\n\""},{"line_number":71,"context_line":"                    \"If set to anything else --\u003e Datera tenant ID will be the \""},{"line_number":72,"context_line":"                    \"provided value\"),"},{"line_number":73,"context_line":"    cfg.BoolOpt(\u0027datera_enable_image_cache\u0027,"},{"line_number":74,"context_line":"                default\u003dFalse,"},{"line_number":75,"context_line":"                help\u003d\"Set to True to enable Datera backend image caching\"),"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_f43382a9","line":72,"range":{"start_line":69,"start_character":20,"end_line":72,"end_character":37},"in_reply_to":"3fa7e38b_0e6796ba","updated":"2020-03-09 22:03:44.000000000","message":"Done","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    \"during volume provisioning\\n\""},{"line_number":71,"context_line":"                    \"If set to anything else --\u003e Datera tenant ID will be the \""},{"line_number":72,"context_line":"                    \"provided value\"),"},{"line_number":73,"context_line":"    cfg.BoolOpt(\u0027datera_enable_image_cache\u0027,"},{"line_number":74,"context_line":"                default\u003dFalse,"},{"line_number":75,"context_line":"                help\u003d\"Set to True to enable Datera backend image caching\"),"},{"line_number":76,"context_line":"    cfg.StrOpt(\u0027datera_image_cache_volume_type_id\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_2e6292a8","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":44},"updated":"2020-02-07 12:48:58.000000000","message":"How does this play with the general volume caching? Seems a little confusing to have two different cache options.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"1dee28acda871fd1f2f3d5ae2442876b9344f881","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    \"during volume provisioning\\n\""},{"line_number":71,"context_line":"                    \"If set to anything else --\u003e Datera tenant ID will be the \""},{"line_number":72,"context_line":"                    \"provided value\"),"},{"line_number":73,"context_line":"    cfg.BoolOpt(\u0027datera_enable_image_cache\u0027,"},{"line_number":74,"context_line":"                default\u003dFalse,"},{"line_number":75,"context_line":"                help\u003d\"Set to True to enable Datera backend image caching\"),"},{"line_number":76,"context_line":"    cfg.StrOpt(\u0027datera_image_cache_volume_type_id\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_2843fe43","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":44},"in_reply_to":"1fa4df85_d4d5261d","updated":"2020-03-09 22:19:47.000000000","message":"Opened https://github.com/Datera/cinder-driver/issues/40, I will have a look at this asap.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                    \"during volume provisioning\\n\""},{"line_number":71,"context_line":"                    \"If set to anything else --\u003e Datera tenant ID will be the \""},{"line_number":72,"context_line":"                    \"provided value\"),"},{"line_number":73,"context_line":"    cfg.BoolOpt(\u0027datera_enable_image_cache\u0027,"},{"line_number":74,"context_line":"                default\u003dFalse,"},{"line_number":75,"context_line":"                help\u003d\"Set to True to enable Datera backend image caching\"),"},{"line_number":76,"context_line":"    cfg.StrOpt(\u0027datera_image_cache_volume_type_id\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_d4d5261d","line":73,"range":{"start_line":73,"start_character":16,"end_line":73,"end_character":44},"in_reply_to":"3fa7e38b_2e6292a8","updated":"2020-03-09 22:03:44.000000000","message":"@Virgil, please have a look at this.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"4f1fa50f9095eaff2e5ac8b591994f56df7100c6","unresolved":false,"context_lines":[{"line_number":108,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":109,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    VERSION \u003d \u00272019.6.4.1\u0027"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    CI_WIKI_NAME \u003d \"datera-ci\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_163496aa","line":111,"updated":"2020-02-06 19:40:39.000000000","message":"probably should still have a version history in this file.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3ca402384c579dc2ebf8b4742047208bdb8c014f","unresolved":false,"context_lines":[{"line_number":108,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":109,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    VERSION \u003d \u00272019.6.4.1\u0027"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    CI_WIKI_NAME \u003d \"datera-ci\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_36449974","line":111,"in_reply_to":"1fa4df85_747b1227","updated":"2020-03-11 18:28:17.000000000","message":"The problem with putting the history elsewhere is that people that deploy this driver have to go find it.  It\u0027s much better if the history is here.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"68ca875a7f50cadbf334671464f44b40531ca35d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":109,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    VERSION \u003d \u00272019.6.4.1\u0027"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    CI_WIKI_NAME \u003d \"datera-ci\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_cefe5eb4","line":111,"in_reply_to":"3fa7e38b_163496aa","updated":"2020-02-07 12:48:58.000000000","message":"+1","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"e79dca4303737d8944ad83d7303a6f36b27b37f0","unresolved":false,"context_lines":[{"line_number":108,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":109,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    VERSION \u003d \u00272019.6.4.1\u0027"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    CI_WIKI_NAME \u003d \"datera-ci\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1fa4df85_747b1227","line":111,"in_reply_to":"3fa7e38b_66a2e042","updated":"2020-03-09 22:03:44.000000000","message":"I added the last couple version history entry (changes since the previous API version has been removed), and a link for the interested to the out-of-tree version changes.\n\nLMK if you like this solution. Feels cleaner than dumping here all the version history entries also from the out-of-tree past.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"963edbe38547afe7b5388d030001f2fc0b859167","unresolved":false,"context_lines":[{"line_number":108,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":109,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    VERSION \u003d \u00272019.6.4.1\u0027"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    CI_WIKI_NAME \u003d \"datera-ci\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_66a2e042","line":111,"in_reply_to":"3fa7e38b_c53cedeb","updated":"2020-02-09 15:46:48.000000000","message":"Great you have that content. Add it.","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":31064,"name":"Virgil Mihailovici","email":"virgilm@gmail.com","username":"virgilm"},"change_message_id":"e4f4163913ff1afc57cb21986106b53e89a8b19a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":109,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    VERSION \u003d \u00272019.6.4.1\u0027"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    CI_WIKI_NAME \u003d \"datera-ci\""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3fa7e38b_c53cedeb","line":111,"in_reply_to":"3fa7e38b_cefe5eb4","updated":"2020-02-09 01:26:49.000000000","message":"There is a VERSION_HISTORY file in our repo:\nhttps://github.com/Datera/cinder-driver/blob/master/VERSION_HISTORY\n\nand the same version history is present in the project README:\nhttps://github.com/Datera/cinder-driver/blob/master/README.rst","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"3e13b1518f2099b9540b380f6cfafa2229d2a68b","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":106,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":107,"context_line":"    \"\"\"Datera iSCSI volume driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    .. code-block:: none"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_1b93c6a5","line":106,"updated":"2020-03-11 17:16:08.000000000","message":"This still needs @interface.volumedriver decorator added.","commit_id":"2a85bafb654e75ead1c021df520e5d50466bd6ca"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"5c5c44690115cc7c1c4ee9ab66b04a3d71673220","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"@six.add_metaclass(utils.TraceWrapperWithABCMetaclass)"},{"line_number":106,"context_line":"class DateraDriver(san.SanISCSIDriver, api21.DateraApi, api22.DateraApi):"},{"line_number":107,"context_line":"    \"\"\"Datera iSCSI volume driver."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    .. code-block:: none"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_f8b34b4c","line":106,"in_reply_to":"1fa4df85_1b93c6a5","updated":"2020-03-11 20:30:24.000000000","message":"Done","commit_id":"2a85bafb654e75ead1c021df520e5d50466bd6ca"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"63c93e312335e2909707b81f36b9b2da748698d3","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      2019.1.24.0  - Python-SDK requirements update, README updates"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    For more detailed and out-of-tree version history please consult"},{"line_number":119,"context_line":"      https://github.com/Datera/cinder-driver/blob/master/README.rst"},{"line_number":120,"context_line":"    \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    VERSION \u003d \u00272019.12.10.0\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_e0687b88","line":119,"updated":"2020-03-11 16:59:05.000000000","message":"\u003e I added the last couple version history entry (changes since the\n \u003e previous API version has been removed), and a link for the\n \u003e interested to the out-of-tree version changes.\n \u003e \n \u003e LMK if you like this solution. Feels cleaner than dumping here all\n \u003e the version history entries also from the out-of-tree past.\n\nI honestly don\u0027t know what to do about this.  The driver in stable/train has version 2.4.0, so it\u0027s kind of weird that that\u0027s not even listed here, whereas 2019.1 ... 2019.6.4.1 are listed, but they aren\u0027t available in the cinder repo.\n\nI think my preference is just dump your https://github.com/Datera/cinder-driver/blob/master/VERSION_HISTORY in here (though spot checking the other drivers, it looks like they all use chronological ordering instead of reverse-chrono as you have it that file).\n\nEither that or list 1.0 ... 2.4.0 from the stable/train version, and just add 2019.12.10.0 with the description \"accumulated changes since 2.4.0, see \u003curl\u003e for details\".  Actually, maybe this is my preference, it reflects reality more closely.\n\nAs far as what this is used for, we don\u0027t currently generate docs from the stuff in volume/drivers/* as part of the Cinder python module documentation.  Most drivers have this copied \u0026 pasted into doc/source/drivers.rst (where Datera isn\u0027t currently represented, btw).  But I think it would be good to have the info here in case we write a sphinx directive to extract the version history directly from the python class at some point.  I think most reviewers consider the version history in the python class to be the source of truth.\n\nI don\u0027t think any of the current drivers have version history in their individual driver doc page, like your current doc/source/configuration/block-storage/drivers/datera-volume-driver.rst\n\nAnyway, I think (a) a version history is useful here, (b) it should reflect reality (more or less), and (c) you should whatever solution makes it the case that your in-tree driver does not diverge from your out-of-tree driver for this version.","commit_id":"2a85bafb654e75ead1c021df520e5d50466bd6ca"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"81cdf572e23b6ac972cbae650390db97f9c2f3ab","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      2019.1.24.0  - Python-SDK requirements update, README updates"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    For more detailed and out-of-tree version history please consult"},{"line_number":119,"context_line":"      https://github.com/Datera/cinder-driver/blob/master/README.rst"},{"line_number":120,"context_line":"    \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    VERSION \u003d \u00272019.12.10.0\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_fbc34a89","line":119,"in_reply_to":"1fa4df85_603ecbdb","updated":"2020-03-11 17:18:08.000000000","message":"Sean\u0027s correct (of course!).  The \"all drivers\" page is auto-generated, is it\u0027s definitely important to have the version history in this file be correct (or at least be what you want displayed in the docs).","commit_id":"2a85bafb654e75ead1c021df520e5d50466bd6ca"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"26ec816f0de9b9ef6171981b6ce060c14071078c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      2019.1.24.0  - Python-SDK requirements update, README updates"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    For more detailed and out-of-tree version history please consult"},{"line_number":119,"context_line":"      https://github.com/Datera/cinder-driver/blob/master/README.rst"},{"line_number":120,"context_line":"    \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    VERSION \u003d \u00272019.12.10.0\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_603ecbdb","line":119,"in_reply_to":"1fa4df85_e0687b88","updated":"2020-03-11 17:08:38.000000000","message":"Actually, that\u0027s not quite correct. The doc/source/drivers.rst file is generated from the docstring source code of the driver.","commit_id":"2a85bafb654e75ead1c021df520e5d50466bd6ca"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"915e440300d1788bc52ec4c4f5508394849583c8","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      2019.1.24.0  - Python-SDK requirements update, README updates"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    For more detailed and out-of-tree version history please consult"},{"line_number":119,"context_line":"      https://github.com/Datera/cinder-driver/blob/master/README.rst"},{"line_number":120,"context_line":"    \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    VERSION \u003d \u00272019.12.10.0\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_7b2515ab","line":119,"in_reply_to":"1fa4df85_e0687b88","updated":"2020-03-11 21:28:38.000000000","message":"Done\n\nThanks Brian, I created the blueprint and also collected the links we need to amend:\n\nhttps://blueprints.launchpad.net/cinder/+spec/datera-driver-restoration","commit_id":"2a85bafb654e75ead1c021df520e5d50466bd6ca"},{"author":{"_account_id":10298,"name":"Mark Korondi","email":"korondi.mark@gmail.com","username":"oro"},"change_message_id":"5c5c44690115cc7c1c4ee9ab66b04a3d71673220","unresolved":false,"context_lines":[{"line_number":116,"context_line":"      2019.1.24.0  - Python-SDK requirements update, README updates"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    For more detailed and out-of-tree version history please consult"},{"line_number":119,"context_line":"      https://github.com/Datera/cinder-driver/blob/master/README.rst"},{"line_number":120,"context_line":"    \"\"\""},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    VERSION \u003d \u00272019.12.10.0\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"1fa4df85_b8871362","line":119,"in_reply_to":"1fa4df85_fbc34a89","updated":"2020-03-11 20:30:24.000000000","message":"Done\n\nThat was my fault, sorry everyone, I should\u0027ve compared to the base...","commit_id":"2a85bafb654e75ead1c021df520e5d50466bd6ca"}],"setup.cfg":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"1187532c633d2464285704897b61fa91e071470a","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    storpool\u003e\u003d4.0.0 # Apache-2.0"},{"line_number":134,"context_line":"    storpool.spopenstack\u003e\u003d2.2.1 # Apache-2.0"},{"line_number":135,"context_line":"datera \u003d"},{"line_number":136,"context_line":"    dfs_sdk\u003e\u003d1.2.25 # Apache-2.0"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":10,"id":"3fa7e38b_761e2a76","line":136,"updated":"2020-02-06 20:17:11.000000000","message":"you need to add this to the all section as well","commit_id":"6aabf4669204cb28d0ededfd3a6efba1fdd06293"}]}
