)]}'
{"cinder/tests/unit/volume/drivers/dell_emc/vxflexos/test_manage_existing_snapshot.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ef738a95cf78cd11588e1b30efa110171883d3c3","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"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":"from mock import patch"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder import context"},{"line_number":18,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_c87fdaa8","line":15,"updated":"2020-04-01 13:50:24.000000000","message":"E0401: \u001b[1;31mUnable to import \u0027mock\u0027\u001b[0m (\u001b[1;31mimport-error\u001b[0m)","commit_id":"b1e49b801bb153e4fdb68cc8e342ac69a8ab64b3"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"1cccdb05b71575e74887e4a34833941d8af0eb61","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"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":"from mock import patch"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder import context"},{"line_number":18,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_306316b4","line":15,"in_reply_to":"df33271e_8a9d8f0c","updated":"2020-04-03 15:23:42.000000000","message":"Done","commit_id":"b1e49b801bb153e4fdb68cc8e342ac69a8ab64b3"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"8545ce7aea82bd9149faeacdff8c3304ad086cbb","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"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":"from mock import patch"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from cinder import context"},{"line_number":18,"context_line":"from cinder import exception"}],"source_content_type":"text/x-python","patch_set":6,"id":"df33271e_8a9d8f0c","line":15,"in_reply_to":"df33271e_c87fdaa8","updated":"2020-04-03 14:29:25.000000000","message":"This actually will need to be fixed. We\u0027ve dropped mock from our third party requirements and there is now a hacking check in place to make sure no code uses the the non-standard lib mock.","commit_id":"b1e49b801bb153e4fdb68cc8e342ac69a8ab64b3"}],"cinder/volume/drivers/dell_emc/vxflexos/driver.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"82a633e948aac0e94362ef2c1cf55bb229856a17","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        :return: storage backend failover state"},{"line_number":143,"context_line":"        \"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        return bool(self.active_backend_id and"},{"line_number":146,"context_line":"                    self.active_backend_id !\u003d \"default\")"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _get_client(self, secondary\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_df19f186","line":145,"range":{"start_line":145,"start_character":15,"end_line":145,"end_character":19},"updated":"2020-02-11 19:49:21.000000000","message":"Casting to bool is a little redundant, but harmless.","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"5e05635ec6b6c134a0a48f7eb6c0bbd03e95cb7d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        :return: storage backend failover state"},{"line_number":143,"context_line":"        \"\"\""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"        return bool(self.active_backend_id and"},{"line_number":146,"context_line":"                    self.active_backend_id !\u003d \"default\")"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def _get_client(self, secondary\u003dFalse):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_3c7849f5","line":145,"range":{"start_line":145,"start_character":15,"end_line":145,"end_character":19},"in_reply_to":"3fa7e38b_df19f186","updated":"2020-02-12 09:31:09.000000000","message":"If self.active_backend_id is empty string for example, there will be an error doing xor(\u0027\u0027, bool). Another example is replication enabled capability which will be \u0027\u0027 instead of boolean in (\u0027\u0027 and False) case.\nSo I decided to manually cast it to boolean. And also it is not harmless as you mentioned above.","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"82a633e948aac0e94362ef2c1cf55bb229856a17","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                    fields.ReplicationStatus.ERROR"},{"line_number":383,"context_line":"                )"},{"line_number":384,"context_line":"                volume.update(model_updates)"},{"line_number":385,"context_line":"                volume.save()"},{"line_number":386,"context_line":"                LOG.error(\"Failed to configure replication for volume %s.\","},{"line_number":387,"context_line":"                          volume.id)"},{"line_number":388,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_9f413965","line":385,"range":{"start_line":385,"start_character":16,"end_line":385,"end_character":29},"updated":"2020-02-11 19:49:21.000000000","message":"We really shouldn\u0027t have database operations inside the driver. Model updates should be returned from the driver to allow the manager to perform the DB access.","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ce485283101ea5c25f1ca6feb654def23b8da566","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        # validate oversubscription ratio"},{"line_number":147,"context_line":"        if (self.configuration.max_over_subscription_ratio is not None and"},{"line_number":148,"context_line":"                (self.configuration.max_over_subscription_ratio -"},{"line_number":149,"context_line":"                 VXFLEXOS_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":150,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %(ratio)1f \""},{"line_number":151,"context_line":"                     \"while VxFlex OS support up to %(vxflexos_ratio)s.\") %"},{"line_number":152,"context_line":"                   {\"vxflexos_ratio\": VXFLEXOS_MAX_OVERSUBSCRIPTION_RATIO,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_68db657b","line":149,"range":{"start_line":148,"start_character":17,"end_line":149,"end_character":57},"updated":"2020-03-30 14:57:19.000000000","message":"is this validation check correct? It will allow the config option to be set to 11.0, which seems weird since VXFLEXOS_MAX_OVERSUBSCRIPTION_RATIO is 10.0.","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"3191b6394fcd99887907a7e427f01037eebdce75","unresolved":false,"context_lines":[{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        # validate oversubscription ratio"},{"line_number":147,"context_line":"        if (self.configuration.max_over_subscription_ratio is not None and"},{"line_number":148,"context_line":"                (self.configuration.max_over_subscription_ratio -"},{"line_number":149,"context_line":"                 VXFLEXOS_MAX_OVERSUBSCRIPTION_RATIO \u003e 1)):"},{"line_number":150,"context_line":"            msg \u003d (_(\"Max over subscription is configured to %(ratio)1f \""},{"line_number":151,"context_line":"                     \"while VxFlex OS support up to %(vxflexos_ratio)s.\") %"},{"line_number":152,"context_line":"                   {\"vxflexos_ratio\": VXFLEXOS_MAX_OVERSUBSCRIPTION_RATIO,"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_3331c45b","line":149,"range":{"start_line":148,"start_character":17,"end_line":149,"end_character":57},"in_reply_to":"df33271e_68db657b","updated":"2020-03-31 06:03:43.000000000","message":"Done","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ce485283101ea5c25f1ca6feb654def23b8da566","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                self.configuration.vxflexos_round_volume_capacity"},{"line_number":359,"context_line":"            )"},{"line_number":360,"context_line":"            if not round_volume_capacity:"},{"line_number":361,"context_line":"                msg \u003d (_(\"Can not create volume of size %s: \""},{"line_number":362,"context_line":"                         \"not multiple of 8GB.\") % size)"},{"line_number":363,"context_line":"                LOG.error(msg)"},{"line_number":364,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_e890154d","line":361,"range":{"start_line":361,"start_character":26,"end_line":361,"end_character":33},"updated":"2020-03-30 14:57:19.000000000","message":"nit: \u0027Cannot\u0027 was correct","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"3191b6394fcd99887907a7e427f01037eebdce75","unresolved":false,"context_lines":[{"line_number":358,"context_line":"                self.configuration.vxflexos_round_volume_capacity"},{"line_number":359,"context_line":"            )"},{"line_number":360,"context_line":"            if not round_volume_capacity:"},{"line_number":361,"context_line":"                msg \u003d (_(\"Can not create volume of size %s: \""},{"line_number":362,"context_line":"                         \"not multiple of 8GB.\") % size)"},{"line_number":363,"context_line":"                LOG.error(msg)"},{"line_number":364,"context_line":"                raise exception.VolumeBackendAPIException(data\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_9332505d","line":361,"range":{"start_line":361,"start_character":26,"end_line":361,"end_character":33},"in_reply_to":"df33271e_e890154d","updated":"2020-03-31 06:03:43.000000000","message":"Done","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"f3d7260489744208c0d84770e2e8f8a77b9b9bf8","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        # some versions of the API had a typo in the response"},{"line_number":733,"context_line":"        thin_capacity_allocated \u003d stats.get(\"thinCapacityAllocatedInKm\")"},{"line_number":734,"context_line":"        if thin_capacity_allocated is None:"},{"line_number":735,"context_line":"            thin_capacity_allocated \u003d stats.get(\"thinCapacityAllocatedInKb\", 0)"},{"line_number":736,"context_line":"        # Divide by two because VxFlex OS creates"},{"line_number":737,"context_line":"        # a copy for each volume"},{"line_number":738,"context_line":"        provisioned_capacity \u003d flex_utils.convert_kb_to_gib("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_75d0c651","line":735,"range":{"start_line":735,"start_character":38,"end_line":735,"end_character":79},"updated":"2020-02-24 16:19:03.000000000","message":"You already know thinCapacityAllocatedInKb isn\u0027t valid since you\u0027ve done the get() and it\u0027s None, so this should just set it to 0.","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"c30fcac62a0225147c5afac5ab0e409945e9bfff","unresolved":false,"context_lines":[{"line_number":732,"context_line":"        # some versions of the API had a typo in the response"},{"line_number":733,"context_line":"        thin_capacity_allocated \u003d stats.get(\"thinCapacityAllocatedInKm\")"},{"line_number":734,"context_line":"        if thin_capacity_allocated is None:"},{"line_number":735,"context_line":"            thin_capacity_allocated \u003d stats.get(\"thinCapacityAllocatedInKb\", 0)"},{"line_number":736,"context_line":"        # Divide by two because VxFlex OS creates"},{"line_number":737,"context_line":"        # a copy for each volume"},{"line_number":738,"context_line":"        provisioned_capacity \u003d flex_utils.convert_kb_to_gib("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_b7a079a7","line":735,"range":{"start_line":735,"start_character":38,"end_line":735,"end_character":79},"in_reply_to":"1fa4df85_75d0c651","updated":"2020-02-25 07:54:07.000000000","message":"It\u0027s ok. Firstly we try to get AllocatedInKm as there can be a type in some VxFlex OS versions. If it is None we use AllocatedInKb and set it to 0 if it\u0027s not found in response.","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"}],"cinder/volume/drivers/dell_emc/vxflexos/rest_client.py":[{"author":{"_account_id":7160,"name":"arkady kanevsky","email":"akanevsk@redhat.com","username":"arkady"},"change_message_id":"42d228a65619bbe34f2eeea8abeee0085025eb65","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    @property"},{"line_number":63,"context_line":"    def connection_properties(self):"},{"line_number":64,"context_line":"        return {"},{"line_number":65,"context_line":"            \"scaleIO_volname\": None,"},{"line_number":66,"context_line":"            \"hostIP\": None,"},{"line_number":67,"context_line":"            \"serverIP\": self.rest_ip,"},{"line_number":68,"context_line":"            \"serverPort\": self.rest_port,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e45f84e1","line":65,"range":{"start_line":65,"start_character":13,"end_line":65,"end_character":28},"updated":"2020-02-11 17:50:27.000000000","message":"should this be vxflex_volname?","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"a6ebc74743b8c3d62923d6b74ca83170c274b389","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    @property"},{"line_number":63,"context_line":"    def connection_properties(self):"},{"line_number":64,"context_line":"        return {"},{"line_number":65,"context_line":"            \"scaleIO_volname\": None,"},{"line_number":66,"context_line":"            \"hostIP\": None,"},{"line_number":67,"context_line":"            \"serverIP\": self.rest_ip,"},{"line_number":68,"context_line":"            \"serverPort\": self.rest_port,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1c022d73","line":65,"range":{"start_line":65,"start_character":13,"end_line":65,"end_character":28},"in_reply_to":"3fa7e38b_b1f9c91c","updated":"2020-02-12 08:59:54.000000000","message":"Sean is correct. This is used in os-brick and was not renamed there so it is not renamed in cinder driver too.","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"82a633e948aac0e94362ef2c1cf55bb229856a17","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    @property"},{"line_number":63,"context_line":"    def connection_properties(self):"},{"line_number":64,"context_line":"        return {"},{"line_number":65,"context_line":"            \"scaleIO_volname\": None,"},{"line_number":66,"context_line":"            \"hostIP\": None,"},{"line_number":67,"context_line":"            \"serverIP\": self.rest_ip,"},{"line_number":68,"context_line":"            \"serverPort\": self.rest_port,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b1f9c91c","line":65,"range":{"start_line":65,"start_character":13,"end_line":65,"end_character":28},"in_reply_to":"3fa7e38b_e45f84e1","updated":"2020-02-11 19:49:21.000000000","message":"I think this was one of those internal backwards compatibility artifacts from the rename?","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"048296218c4b14bf3e9b8f5c8a8de283c909002d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        LOG.info(\"Protection Domain id: %s.\", domain_id)"},{"line_number":156,"context_line":"        pool_id \u003d self.get_storage_pool_id(protection_domain_name,"},{"line_number":157,"context_line":"                                           storage_pool_name)"},{"line_number":158,"context_line":"        LOG.info(\"Storage Pool id: %s.\", pool_id)"},{"line_number":159,"context_line":"        volume_name \u003d flex_utils.id_to_base64(volume.id)"},{"line_number":160,"context_line":"        # units.Mi \u003d 1024 ** 2"},{"line_number":161,"context_line":"        volume_size_kb \u003d volume.size * units.Mi"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_14a00a90","line":158,"range":{"start_line":158,"start_character":8,"end_line":158,"end_character":16},"updated":"2020-04-08 19:42:13.000000000","message":"Some of these could be LOG.debug as they aren\u0027t going to mean much to a user without more context.","commit_id":"f75b2865fe2aee3f6aefea8f08ce92e1d590ac98"},{"author":{"_account_id":7198,"name":"Jay Bryant","email":"jungleboyj@electronicjungle.net","username":"jsbryant"},"change_message_id":"048296218c4b14bf3e9b8f5c8a8de283c909002d","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        if (response.status_code \u003d\u003d http_client.UNAUTHORIZED or"},{"line_number":343,"context_line":"                response.status_code \u003d\u003d http_client.FORBIDDEN):"},{"line_number":344,"context_line":"            LOG.info(\"Token is invalid, going to re-login and get \""},{"line_number":345,"context_line":"                     \"a new one.\")"},{"line_number":346,"context_line":"            login_request \u003d self.base_url + login_url"},{"line_number":347,"context_line":"            verify_cert \u003d self._get_verify_cert()"}],"source_content_type":"text/x-python","patch_set":7,"id":"df33271e_d4e862b4","line":344,"range":{"start_line":344,"start_character":12,"end_line":344,"end_character":20},"updated":"2020-04-08 19:42:13.000000000","message":"Same here.","commit_id":"f75b2865fe2aee3f6aefea8f08ce92e1d590ac98"}],"cinder/volume/drivers/dell_emc/vxflexos/utils.py":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"82a633e948aac0e94362ef2c1cf55bb229856a17","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    if isinstance(encoded_name, six.text_type):"},{"line_number":45,"context_line":"        encoded_name \u003d encoded_name.encode(\"utf-8\")"},{"line_number":46,"context_line":"    encoded_name \u003d base64.b64encode(encoded_name)"},{"line_number":47,"context_line":"    if six.PY3:"},{"line_number":48,"context_line":"        encoded_name \u003d encoded_name.decode(\"ascii\")"},{"line_number":49,"context_line":"    LOG.debug(\"Converted id %(id)s to VxFlex OS name %(name)s.\","},{"line_number":50,"context_line":"              {\"id\": _id, \"name\": encoded_name})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_d127a5b4","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":15},"updated":"2020-02-11 19:49:21.000000000","message":"This isn\u0027t really needed anymore since we are py3-only.","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"5e05635ec6b6c134a0a48f7eb6c0bbd03e95cb7d","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    if isinstance(encoded_name, six.text_type):"},{"line_number":45,"context_line":"        encoded_name \u003d encoded_name.encode(\"utf-8\")"},{"line_number":46,"context_line":"    encoded_name \u003d base64.b64encode(encoded_name)"},{"line_number":47,"context_line":"    if six.PY3:"},{"line_number":48,"context_line":"        encoded_name \u003d encoded_name.decode(\"ascii\")"},{"line_number":49,"context_line":"    LOG.debug(\"Converted id %(id)s to VxFlex OS name %(name)s.\","},{"line_number":50,"context_line":"              {\"id\": _id, \"name\": encoded_name})"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1c5ead78","line":47,"range":{"start_line":47,"start_character":4,"end_line":47,"end_character":15},"in_reply_to":"3fa7e38b_d127a5b4","updated":"2020-02-12 09:31:09.000000000","message":"Will remove it in next patchset. Thanks.","commit_id":"7f38e68dd61d48f0b6c3dff819f1e8c8366ecf9c"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"ce485283101ea5c25f1ca6feb654def23b8da566","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def round_to_num_gran(size, num\u003d8):"},{"line_number":55,"context_line":"    \"\"\"Round size to nearest value that is granalarity of 8.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    if size % num \u003d\u003d 0:"},{"line_number":58,"context_line":"        return size"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_884069a7","line":55,"range":{"start_line":55,"start_character":43,"end_line":55,"end_character":54},"updated":"2020-03-30 14:57:19.000000000","message":"nit: granularity (same below), but more importantly, the granularity is only 8 by default -- this docstring doesn\u0027t really describe what the function does.","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"3191b6394fcd99887907a7e427f01037eebdce75","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def round_to_num_gran(size, num\u003d8):"},{"line_number":55,"context_line":"    \"\"\"Round size to nearest value that is granalarity of 8.\"\"\""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    if size % num \u003d\u003d 0:"},{"line_number":58,"context_line":"        return size"}],"source_content_type":"text/x-python","patch_set":4,"id":"df33271e_134640c1","line":55,"range":{"start_line":55,"start_character":43,"end_line":55,"end_character":54},"in_reply_to":"df33271e_884069a7","updated":"2020-03-31 06:03:43.000000000","message":"Typo fixed and docstring changed.","commit_id":"72e59b7d4e58d3d4667f0e0122a3c58cdb7c15fd"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"f88acd5dd64860105cd5a85709a0d9a3771bc200","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    return int(math.floor(float(size) / units.Mi))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def id_to_base64(_id):"},{"line_number":36,"context_line":"    # Base64 encode the id to get a volume name less than 32 characters due"},{"line_number":37,"context_line":"    # to VxFlex OS limitation."},{"line_number":38,"context_line":"    name \u003d six.text_type(_id).replace(\"-\", \"\")"},{"line_number":39,"context_line":"    try:"},{"line_number":40,"context_line":"        name \u003d base64.b16decode(name.upper())"},{"line_number":41,"context_line":"    except (TypeError, binascii.Error):"},{"line_number":42,"context_line":"        pass"},{"line_number":43,"context_line":"    encoded_name \u003d name"},{"line_number":44,"context_line":"    if isinstance(encoded_name, six.text_type):"},{"line_number":45,"context_line":"        encoded_name \u003d encoded_name.encode(\"utf-8\")"},{"line_number":46,"context_line":"    encoded_name \u003d base64.b64encode(encoded_name)"},{"line_number":47,"context_line":"    if six.PY3:"},{"line_number":48,"context_line":"        encoded_name \u003d encoded_name.decode(\"ascii\")"},{"line_number":49,"context_line":"    LOG.debug(\"Converted id %(id)s to VxFlex OS name %(name)s.\","},{"line_number":50,"context_line":"              {\"id\": _id, \"name\": encoded_name})"},{"line_number":51,"context_line":"    return encoded_name"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def round_to_num_gran(size, num\u003d8):"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_cf6889f6","line":51,"range":{"start_line":35,"start_character":1,"end_line":51,"end_character":23},"updated":"2020-04-01 09:11:30.000000000","message":"It\u0027s a new feature implementation, so we shouldn\u0027t have python2 compatibility","commit_id":"010568f1654495b0e8227f0b4e50965739c9add2"},{"author":{"_account_id":31016,"name":"Ivan Pchelintsev","email":"i.pchelintsev@yadro.com","username":"pcheli"},"change_message_id":"a849571f4862d0180b169c11fe3f588306f63855","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    return int(math.floor(float(size) / units.Mi))"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"def id_to_base64(_id):"},{"line_number":36,"context_line":"    # Base64 encode the id to get a volume name less than 32 characters due"},{"line_number":37,"context_line":"    # to VxFlex OS limitation."},{"line_number":38,"context_line":"    name \u003d six.text_type(_id).replace(\"-\", \"\")"},{"line_number":39,"context_line":"    try:"},{"line_number":40,"context_line":"        name \u003d base64.b16decode(name.upper())"},{"line_number":41,"context_line":"    except (TypeError, binascii.Error):"},{"line_number":42,"context_line":"        pass"},{"line_number":43,"context_line":"    encoded_name \u003d name"},{"line_number":44,"context_line":"    if isinstance(encoded_name, six.text_type):"},{"line_number":45,"context_line":"        encoded_name \u003d encoded_name.encode(\"utf-8\")"},{"line_number":46,"context_line":"    encoded_name \u003d base64.b64encode(encoded_name)"},{"line_number":47,"context_line":"    if six.PY3:"},{"line_number":48,"context_line":"        encoded_name \u003d encoded_name.decode(\"ascii\")"},{"line_number":49,"context_line":"    LOG.debug(\"Converted id %(id)s to VxFlex OS name %(name)s.\","},{"line_number":50,"context_line":"              {\"id\": _id, \"name\": encoded_name})"},{"line_number":51,"context_line":"    return encoded_name"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"def round_to_num_gran(size, num\u003d8):"}],"source_content_type":"text/x-python","patch_set":5,"id":"df33271e_fe8c1d37","line":51,"range":{"start_line":35,"start_character":1,"end_line":51,"end_character":23},"in_reply_to":"df33271e_cf6889f6","updated":"2020-04-01 11:34:49.000000000","message":"Done","commit_id":"010568f1654495b0e8227f0b4e50965739c9add2"}]}
