)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Driver was removed in L cycle due to lack of CI."},{"line_number":10,"context_line":"Driver was present in K release, validated and tests passing."},{"line_number":11,"context_line":"CI was rebuilt and is operational."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I9760072c5029ba2b4832b79b5aaa745aa30dc10b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"fa80f949_401d4c72","line":12,"updated":"2015-11-03 16:07:44.000000000","message":"Sorry, can we get a blueprint added and referenced here as:\n\nImplements: blueprint bp_name\n\nThat way it will make sure it is in the list to be added to the release notes and we can highlight that your driver is now available in Mitaka.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":16708,"name":"Kendall Nelson","display_name":"Kendall (diablo_rojo)","email":"kennelson11@gmail.com","username":"kjnelson"},"change_message_id":"1780d7b6da0ef37a448a96f03e5eab9c4b1a2919","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Driver was removed in L cycle due to lack of CI."},{"line_number":10,"context_line":"Driver was present in K release, validated and tests passing."},{"line_number":11,"context_line":"CI was rebuilt and is operational."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I9760072c5029ba2b4832b79b5aaa745aa30dc10b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa80f949_d9e8277f","line":12,"updated":"2015-11-04 17:51:23.000000000","message":"I know it was mentioned in a previous patchset that it might be a good idea to add a bp for this so that it can be tracked easier at the end of a release. \n\nThis also needs a DocImpact tag since the driver is being added back in and configuration options are also being added.","commit_id":"5e79578b395355f2338fcc360173823a3a54649b"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"f73dafb73285d1787946373f3fd4b3fb29813e23","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Driver was removed in L cycle due to lack of CI."},{"line_number":10,"context_line":"Driver was present in K release, validated and tests passing."},{"line_number":11,"context_line":"CI was rebuilt and is operational."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I9760072c5029ba2b4832b79b5aaa745aa30dc10b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"fa80f949_94d7c1ec","line":12,"in_reply_to":"fa80f949_d9e8277f","updated":"2015-11-04 19:28:37.000000000","message":"Thx for reminding me, indeed there was a previous comment requesting a bp, but in all the comments i forgot.\nWill submit one asap.","commit_id":"5e79578b395355f2338fcc360173823a3a54649b"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"b5c4272ab09eea28a62369d452b8f4951966017f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Driver was removed in L cycle due to lack of CI."},{"line_number":10,"context_line":"Driver was present in K release, validated and tests passing."},{"line_number":11,"context_line":"CI was rebuilt and is operational."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Implements: blueprint openvstorage-cinder-driver"},{"line_number":14,"context_line":"Change-Id: I9760072c5029ba2b4832b79b5aaa745aa30dc10b"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"fa80f949_ce02690b","line":12,"updated":"2015-11-05 18:09:36.000000000","message":"We still need a DocImpact here since we are editing config options.","commit_id":"c4b55b2a9ceb0a57c678ff90a60c0be3bc47147d"}],"cinder/volume/drivers/openvstorage.py":[{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                         \u0027device_path\u0027: volume.provider_location}}"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"    def create_volume(self, volume):"},{"line_number":110,"context_line":"        \"\"\"Creates a volume."},{"line_number":111,"context_line":"        Called on \"cinder create ...\" or \"nova volume-create ...\""},{"line_number":112,"context_line":"        :param volume: volume reference (sqlalchemy Model)"},{"line_number":113,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_21f2989b","line":110,"updated":"2015-11-03 12:13:01.000000000","message":"Missing a blank line.","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        return {\u0027provider_location\u0027: volume[\u0027provider_location\u0027]}"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    def delete_volume(self, volume):"},{"line_number":141,"context_line":"        \"\"\"Deletes a logical volume."},{"line_number":142,"context_line":"        Called on \"cinder delete ... \""},{"line_number":143,"context_line":"        :param volume: volume reference (sqlalchemy Model)"},{"line_number":144,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_e12a50e7","line":141,"updated":"2015-11-03 12:13:01.000000000","message":"Missing a blank line.","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":148,"context_line":"            vdisklib.VDiskController.delete_volume(location \u003d location)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def copy_image_to_volume(self, context, volume, image_service, image_id):"},{"line_number":151,"context_line":"        \"\"\"Copy image to volume"},{"line_number":152,"context_line":"        Called on \"nova volume-create --image-id ...\""},{"line_number":153,"context_line":"        or \"cinder create --image-id\""},{"line_number":154,"context_line":"        Downloads image from glance server into local .raw"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_e111f0b0","line":151,"updated":"2015-11-03 12:13:01.000000000","message":"the same as above.","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        Called on \"nova volume-create --image-id ...\""},{"line_number":153,"context_line":"        or \"cinder create --image-id\""},{"line_number":154,"context_line":"        Downloads image from glance server into local .raw"},{"line_number":155,"context_line":"        :param volume: volume reference (sqlalchemy Model)"},{"line_number":156,"context_line":"        \"\"\""},{"line_number":157,"context_line":"        LOG.debug(\"CP_IMG_TO_VOL %s %s\", image_service, image_id)"},{"line_number":158,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_a10be87c","line":155,"updated":"2015-11-03 12:13:01.000000000","message":"Missing :param \"image_service\" and \"image_id\".","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            LOG.debug(\u0027CP_IMG_TO_VOL Deleting existing empty raw file %s \u0027,"},{"line_number":168,"context_line":"                      destination_path)"},{"line_number":169,"context_line":"            vdisklib.VDiskController.delete_volume(location \u003d destination_path)"},{"line_number":170,"context_line":"            self._ensure_volume_is_gone(volume.provider_location, str(volume.host))"},{"line_number":171,"context_line":"            LOG.debug(\u0027CP_IMG_TO_VOL Downloading image to %s\u0027,"},{"line_number":172,"context_line":"                      destination_path)"},{"line_number":173,"context_line":"            image_utils.fetch_to_raw(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_41e23ca1","line":170,"updated":"2015-11-03 12:13:01.000000000","message":"str -\u003e six.text_type","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            self.extend_volume(volume \u003d volume, size_gb \u003d volume[\u0027size\u0027])"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"            ovs_disk \u003d self._find_ovs_model_disk_by_location("},{"line_number":185,"context_line":"                volume.provider_location, str(volume.host))"},{"line_number":186,"context_line":"            ovs_disk.name \u003d name"},{"line_number":187,"context_line":"            ovs_disk.save()"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_a1e768ab","line":185,"updated":"2015-11-03 12:13:01.000000000","message":"str -\u003e six.text_type","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        source_ovs_disk \u003d self._find_ovs_model_disk_by_location("},{"line_number":221,"context_line":"            str(src_vref.provider_location), src_vref.host)"},{"line_number":222,"context_line":"        if source_ovs_disk.info[\u0027object_type\u0027] \u003d\u003d \u0027TEMPLATE\u0027:"},{"line_number":223,"context_line":"            LOG.debug(\u0027[CREATE_FROM_TEMPLATE] VDisk %s is a template\u0027,"},{"line_number":224,"context_line":"                      source_ovs_disk.devicename)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"            # Cloning from a template"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_81ffc433","line":223,"updated":"2015-11-03 12:13:01.000000000","message":"Missing . after \"template\".","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            # So for now we\u0027ll take a snapshot"},{"line_number":253,"context_line":"            # (or the latest snapshot existing) and clone from that snapshot"},{"line_number":254,"context_line":"            available_snapshots \u003d [snapshot for snapshot in source_ovs_disk.snapshots"},{"line_number":255,"context_line":"                                   if \u0027in_backend\u0027 not in snapshot or snapshot[\u0027in_backend\u0027] is True]"},{"line_number":256,"context_line":"            if len(available_snapshots) \u003d\u003d 0:"},{"line_number":257,"context_line":"                metadata \u003d {\u0027label\u0027: \"Cinder clone snapshot {0}\".format(name),"},{"line_number":258,"context_line":"                            \u0027is_consistent\u0027: False,"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_c1a38c4e","line":255,"updated":"2015-11-03 12:13:01.000000000","message":"] ??","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        return {\u0027provider_location\u0027: volume[\u0027provider_location\u0027],"},{"line_number":293,"context_line":"                \u0027display_name\u0027: volume[\u0027display_name\u0027]}"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    # Volumedriver stats"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    def get_volume_stats(self, refresh\u003dFalse):"},{"line_number":298,"context_line":"        \"\"\"Get volumedriver stats"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_0168b4f4","line":295,"updated":"2015-11-03 12:13:01.000000000","message":"delete it.","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        data[\u0027QoS_support\u0027] \u003d False"},{"line_number":311,"context_line":"        return data"},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    # Snapshots operations"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def create_snapshot(self, snapshot):"},{"line_number":316,"context_line":"        \"\"\"Creates a snapshot."}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_8174a4cf","line":313,"updated":"2015-11-03 12:13:01.000000000","message":"delete it.","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":16883,"name":"huyang","email":"huyang1@huawei.com","username":"huyang"},"change_message_id":"cee423d4ea925f2a8f8bfa6a1b85e3facd59b35b","unresolved":false,"context_lines":[{"line_number":628,"context_line":"    @staticmethod"},{"line_number":629,"context_line":"    def _wait_for_snapshot(disk, snapshot_id\u003dNone, tries\u003d60):"},{"line_number":630,"context_line":"        \"\"\""},{"line_number":631,"context_line":"        Waits for a given snapshot (or any) to be available in the backend (so it can be used for clones)"},{"line_number":632,"context_line":"        \"\"\""},{"line_number":633,"context_line":"        def load():"},{"line_number":634,"context_line":"            disk.invalidate_dynamics([\u0027snapshots\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa80f949_615e6047","line":631,"updated":"2015-11-03 12:13:01.000000000","message":"more than 80.","commit_id":"1e320e1af743b864154cccae916be8542de7c71f"},{"author":{"_account_id":10439,"name":"Xi Yang","email":"yang.xi@99cloud.net","username":"phenom"},"change_message_id":"06f46d2e482583a946e7533f3436551b20dc7a8f","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS,"},{"line_number":11,"context_line":"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied."},{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"OpenStack Cinder driver - interface to Open vStorage"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_e8d54cb9","line":13,"updated":"2015-11-03 15:07:21.000000000","message":"Not sure if this license is good with OpenStack..","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"6d11d4fb17e938e5e2bcf391f6d517ea106d59fa","unresolved":false,"context_lines":[{"line_number":10,"context_line":"# distributed under the License is distributed on an \"AS IS\" BASIS,"},{"line_number":11,"context_line":"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied."},{"line_number":12,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":13,"context_line":"# limitations under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"OpenStack Cinder driver - interface to Open vStorage"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_03dd1114","line":13,"in_reply_to":"fa80f949_e8d54cb9","updated":"2015-11-03 15:22:40.000000000","message":"I\u0027ll discuss with management if we can revert back to Apache 2.0","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0745b4ce247fc1961830423b437d551cb7bb1b68","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                vol_info.append(\"%s: %s\" % (item, getattr(volume, item)))"},{"line_number":71,"context_line":"            except Exception as ex:"},{"line_number":72,"context_line":"                LOG.debug(\u0027DEBUG failed %s\u0027 % six.text_type(ex))"},{"line_number":73,"context_line":"    LOG.debug(\u0027[%s] %s\u0027 % (call, str(vol_info)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_a86f4491","line":72,"updated":"2015-11-03 15:01:37.000000000","message":"Also remove six.text_type from ex. The logger will take care of any necessary conversion if and when needed.","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"22a763a8fcc5b4b408d93ba66abd03b945962679","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                vol_info.append(\"%s: %s\" % (item, getattr(volume, item)))"},{"line_number":71,"context_line":"            except Exception as ex:"},{"line_number":72,"context_line":"                LOG.debug(\u0027DEBUG failed %s\u0027 % six.text_type(ex))"},{"line_number":73,"context_line":"    LOG.debug(\u0027[%s] %s\u0027 % (call, str(vol_info)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_f2945de9","line":72,"updated":"2015-11-03 14:39:08.000000000","message":"Use , not % in all log statements for delayed intepolation please - we cleaned most cases of this up last cycle. The file uses a mixture.","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"6d11d4fb17e938e5e2bcf391f6d517ea106d59fa","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                vol_info.append(\"%s: %s\" % (item, getattr(volume, item)))"},{"line_number":71,"context_line":"            except Exception as ex:"},{"line_number":72,"context_line":"                LOG.debug(\u0027DEBUG failed %s\u0027 % six.text_type(ex))"},{"line_number":73,"context_line":"    LOG.debug(\u0027[%s] %s\u0027 % (call, str(vol_info)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_43e559a6","line":72,"in_reply_to":"fa80f949_a86f4491","updated":"2015-11-03 15:22:40.000000000","message":"Done","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"6d11d4fb17e938e5e2bcf391f6d517ea106d59fa","unresolved":false,"context_lines":[{"line_number":69,"context_line":"            try:"},{"line_number":70,"context_line":"                vol_info.append(\"%s: %s\" % (item, getattr(volume, item)))"},{"line_number":71,"context_line":"            except Exception as ex:"},{"line_number":72,"context_line":"                LOG.debug(\u0027DEBUG failed %s\u0027 % six.text_type(ex))"},{"line_number":73,"context_line":"    LOG.debug(\u0027[%s] %s\u0027 % (call, str(vol_info)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_a3d8c5f0","line":72,"in_reply_to":"fa80f949_f2945de9","updated":"2015-11-03 15:22:40.000000000","message":"Done","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0745b4ce247fc1961830423b437d551cb7bb1b68","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                vol_info.append(\"%s: %s\" % (item, getattr(volume, item)))"},{"line_number":71,"context_line":"            except Exception as ex:"},{"line_number":72,"context_line":"                LOG.debug(\u0027DEBUG failed %s\u0027 % six.text_type(ex))"},{"line_number":73,"context_line":"    LOG.debug(\u0027[%s] %s\u0027 % (call, str(vol_info)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class OVSVolumeDriver(driver.VolumeDriver):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_68007cab","line":73,"updated":"2015-11-03 15:01:37.000000000","message":"% \u003d\u003e ,\nRemove str() call.","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"6d11d4fb17e938e5e2bcf391f6d517ea106d59fa","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                vol_info.append(\"%s: %s\" % (item, getattr(volume, item)))"},{"line_number":71,"context_line":"            except Exception as ex:"},{"line_number":72,"context_line":"                LOG.debug(\u0027DEBUG failed %s\u0027 % six.text_type(ex))"},{"line_number":73,"context_line":"    LOG.debug(\u0027[%s] %s\u0027 % (call, str(vol_info)))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class OVSVolumeDriver(driver.VolumeDriver):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_8302613d","line":73,"in_reply_to":"fa80f949_68007cab","updated":"2015-11-03 15:22:40.000000000","message":"Done","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"22a763a8fcc5b4b408d93ba66abd03b945962679","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class OVSVolumeDriver(driver.VolumeDriver):"},{"line_number":77,"context_line":"    \"\"\"Open vStorage Volume Driver plugin for Cinder.\"\"\""},{"line_number":78,"context_line":"    VERSION \u003d \u00271.0.8\u0027"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":81,"context_line":"        \"\"\"Init: args, kwargs pass through;"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_726dcd31","line":78,"updated":"2015-11-03 14:39:08.000000000","message":"Is this bumped from the version it was when it was removed? If not, it should be - the consensus at the summit was to bump for any change. It is only used for logging.","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"6d11d4fb17e938e5e2bcf391f6d517ea106d59fa","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class OVSVolumeDriver(driver.VolumeDriver):"},{"line_number":77,"context_line":"    \"\"\"Open vStorage Volume Driver plugin for Cinder.\"\"\""},{"line_number":78,"context_line":"    VERSION \u003d \u00271.0.8\u0027"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":81,"context_line":"        \"\"\"Init: args, kwargs pass through;"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_63aadd72","line":78,"in_reply_to":"fa80f949_726dcd31","updated":"2015-11-03 15:22:40.000000000","message":"Yes, see https://github.com/openstack/cinder/commit/f0ab819732d77a8a6dd1a91422ac183ac4894419\nOld version was 1.0.5","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0745b4ce247fc1961830423b437d551cb7bb1b68","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        Options come from CONF"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        super(OVSVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":86,"context_line":"        LOG.debug(\u0027INIT %s %s %s \u0027, CONF.vpool_name, str(args),"},{"line_number":87,"context_line":"                  str(kwargs))"},{"line_number":88,"context_line":"        self.configuration.append_config_values(OPTS)"},{"line_number":89,"context_line":"        self._vpool_name \u003d self.configuration.vpool_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_8820404b","line":86,"updated":"2015-11-03 15:01:37.000000000","message":"Remove str() calls.","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"6d11d4fb17e938e5e2bcf391f6d517ea106d59fa","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        Options come from CONF"},{"line_number":84,"context_line":"        \"\"\""},{"line_number":85,"context_line":"        super(OVSVolumeDriver, self).__init__(*args, **kwargs)"},{"line_number":86,"context_line":"        LOG.debug(\u0027INIT %s %s %s \u0027, CONF.vpool_name, str(args),"},{"line_number":87,"context_line":"                  str(kwargs))"},{"line_number":88,"context_line":"        self.configuration.append_config_values(OPTS)"},{"line_number":89,"context_line":"        self._vpool_name \u003d self.configuration.vpool_name"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_039511e3","line":86,"in_reply_to":"fa80f949_8820404b","updated":"2015-11-03 15:22:40.000000000","message":"Done","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0745b4ce247fc1961830423b437d551cb7bb1b68","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        :param volume: volume reference (sqlalchemy Model)"},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        hostname \u003d str(volume.host)"},{"line_number":117,"context_line":"        name \u003d volume.display_name"},{"line_number":118,"context_line":"        if not name:"},{"line_number":119,"context_line":"            name \u003d volume.name"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_08a1b0a9","line":116,"updated":"2015-11-03 15:01:37.000000000","message":"str() conversion shouldn\u0027t be necessary, but if so, please use six.text_type instead to be py3 compatible.","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"6d11d4fb17e938e5e2bcf391f6d517ea106d59fa","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        :param volume: volume reference (sqlalchemy Model)"},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        hostname \u003d str(volume.host)"},{"line_number":117,"context_line":"        name \u003d volume.display_name"},{"line_number":118,"context_line":"        if not name:"},{"line_number":119,"context_line":"            name \u003d volume.name"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa80f949_838901cd","line":116,"in_reply_to":"fa80f949_08a1b0a9","updated":"2015-11-03 15:22:40.000000000","message":"Done","commit_id":"a66068d5e9d04ef5582793e3cbcf891e494d6d0c"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                vol_info.append(\"%s: %s\" % (item, getattr(volume, item)))"},{"line_number":71,"context_line":"            except Exception as ex:"},{"line_number":72,"context_line":"                LOG.debug(\u0027DEBUG failed %s\u0027, ex)"},{"line_number":73,"context_line":"    LOG.debug(\u0027[%s] %s\u0027 % (call, vol_info))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"class OVSVolumeDriver(driver.VolumeDriver):"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_a368c2bb","line":73,"updated":"2015-11-03 16:07:44.000000000","message":"% \u003e ,","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":265,"context_line":"            if len(available_snapshots) \u003d\u003d 0:"},{"line_number":266,"context_line":"                metadata \u003d {\u0027label\u0027: \"Cinder clone snapshot {0}\".format(name),"},{"line_number":267,"context_line":"                            \u0027is_consistent\u0027: False,"},{"line_number":268,"context_line":"                            \u0027timestamp\u0027: time.time(),"},{"line_number":269,"context_line":"                            \u0027machineguid\u0027: source_ovs_disk.vmachine_guid,"},{"line_number":270,"context_line":"                            \u0027is_automatic\u0027: False}"},{"line_number":271,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_c3486630","line":268,"updated":"2015-11-03 16:07:44.000000000","message":"This should probably use utc time?","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                            \u0027machineguid\u0027: source_ovs_disk.vmachine_guid,"},{"line_number":270,"context_line":"                            \u0027is_automatic\u0027: False}"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"                LOG.debug(\u0027CREATE_SNAP %s %s\u0027, name, str(metadata))"},{"line_number":273,"context_line":"                snapshotid \u003d vdisklib.VDiskController.create_snapshot("},{"line_number":274,"context_line":"                    diskguid \u003d source_ovs_disk.guid,"},{"line_number":275,"context_line":"                    metadata \u003d metadata,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_035d0ee9","line":272,"updated":"2015-11-03 16:07:44.000000000","message":"Still several instances of using str() in the code.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        LOG.debug(\u0027DELETE_SNAP %s\u0027, snapshot.id)"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        if self._snapshot_has_children(snapshot.id):"},{"line_number":359,"context_line":"            msg \u003d (_(\u0027Snapshot %s has children\u0027), snapshot.id)"},{"line_number":360,"context_line":"            LOG.exception(msg)"},{"line_number":361,"context_line":"            raise exception.SnapshotIsBusy(snapshot_name \u003d snapshot.id)"},{"line_number":362,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_e3256a5c","line":359,"updated":"2015-11-03 16:07:44.000000000","message":"Get rid of msg variable and move this into the LOG.exception call. As it is now, just passing a tuple into the logging call.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":394,"context_line":"            str(volume.host))"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"        LOG.debug(\u0027[CLONE FROM SNAP] %s %s %s %s\u0027"},{"line_number":397,"context_line":"                  % (ovs_snap_disk.guid, snapshot.id, devicename,"},{"line_number":398,"context_line":"                     pmachineguid))"},{"line_number":399,"context_line":"        try:"},{"line_number":400,"context_line":"            kwargs \u003d dict(diskguid \u003d ovs_snap_disk.guid,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_8317beec","line":397,"updated":"2015-11-03 16:07:44.000000000","message":"% \u003e ,","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":412,"context_line":"            volume[\u0027provider_location\u0027] \u003d \u0027{}{}\u0027.format("},{"line_number":413,"context_line":"                mountpoint, disk_meta[\u0027backingdevice\u0027])"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"            LOG.debug(\u0027[CLONE FROM SNAP] Meta: %s\u0027 % str(disk_meta))"},{"line_number":416,"context_line":"            LOG.debug(\u0027[CLONE FROM SNAP] New volume %s\u0027"},{"line_number":417,"context_line":"                      % volume[\u0027provider_location\u0027])"},{"line_number":418,"context_line":"            vdisk \u003d vdiskhybrid.VDisk(disk_meta[\u0027diskguid\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_83eedeea","line":415,"updated":"2015-11-03 16:07:44.000000000","message":"% \u003e ,\n\nGet rid of str().","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":414,"context_line":""},{"line_number":415,"context_line":"            LOG.debug(\u0027[CLONE FROM SNAP] Meta: %s\u0027 % str(disk_meta))"},{"line_number":416,"context_line":"            LOG.debug(\u0027[CLONE FROM SNAP] New volume %s\u0027"},{"line_number":417,"context_line":"                      % volume[\u0027provider_location\u0027])"},{"line_number":418,"context_line":"            vdisk \u003d vdiskhybrid.VDisk(disk_meta[\u0027diskguid\u0027])"},{"line_number":419,"context_line":"            vdisk.cinder_id \u003d volume.id"},{"line_number":420,"context_line":"            vdisk.name \u003d devicename"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_03b98ee9","line":417,"updated":"2015-11-03 16:07:44.000000000","message":"% \u003e ,","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":420,"context_line":"            vdisk.name \u003d devicename"},{"line_number":421,"context_line":"            vdisk.save()"},{"line_number":422,"context_line":"        except Exception as ex:"},{"line_number":423,"context_line":"            msg \u003d _(\u0027CLONE FROM SNAP: Internal error %s \u0027) % six.text_type(ex)"},{"line_number":424,"context_line":"            LOG.error(msg)"},{"line_number":425,"context_line":"            self.delete_volume(volume)"},{"line_number":426,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_e3aa4a85","line":423,"updated":"2015-11-03 16:07:44.000000000","message":"Get rid of msg, move into logger call. Get rid of six.text_type and change % to ,","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":489,"context_line":"        \"\"\"Validate driver setup.\"\"\""},{"line_number":490,"context_line":"        if (vdiskhybrid is None or pmachinelist is None or vdisklist is None or"},{"line_number":491,"context_line":"                vpoollist is None or vdisklib is None):"},{"line_number":492,"context_line":"            msg \u003d (_(\u0027Open vStorage libraries not found\u0027))"},{"line_number":493,"context_line":"            LOG.exception(msg)"},{"line_number":494,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":495,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_63adfa87","line":492,"updated":"2015-11-03 16:07:44.000000000","message":"Outer () not needed.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":517,"context_line":"        hostname \u003d self._get_real_hostname(hostname)"},{"line_number":518,"context_line":"        LOG.debug(\u0027[_GET HOSTNAME MOUNTPOINT] Hostname %s\u0027, hostname)"},{"line_number":519,"context_line":"        if self._vp is None:"},{"line_number":520,"context_line":"            msg \u003d (_(\u0027Open vStorage libraries not found\u0027))"},{"line_number":521,"context_line":"            raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":522,"context_line":"        storagedrivers \u003d [vsr for vsr in self._vp.storagedrivers"},{"line_number":523,"context_line":"                          if str(vsr.storagerouter.name) \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_e3afaa7b","line":520,"updated":"2015-11-03 16:07:44.000000000","message":"Outer () not needed.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":527,"context_line":"                      storagedrivers[0].mountpoint)"},{"line_number":528,"context_line":"            return six.text_type(storagedrivers[0].mountpoint)"},{"line_number":529,"context_line":"        elif not storagedrivers:"},{"line_number":530,"context_line":"            msg \u003d (_(\u0027No vsr mountpoint found for Vpool %(vpool_name)s\u0027"},{"line_number":531,"context_line":"                     \u0027and hostname %(hostname)s\u0027)"},{"line_number":532,"context_line":"                   % {\u0027vpool_name\u0027: self._vpool_name, \u0027hostname\u0027: hostname})"},{"line_number":533,"context_line":"            LOG.exception(msg)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_2304d27c","line":530,"updated":"2015-11-03 16:07:44.000000000","message":"Need trailing space so it doesn\u0027t run together with the next line.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":555,"context_line":"                                          location, vd.guid)"},{"line_number":556,"context_line":"                                disk \u003d vdiskhybrid.VDisk(vd.guid)"},{"line_number":557,"context_line":"                                return disk"},{"line_number":558,"context_line":"            msg \u003d \u0027NO RESULT Attempt %s timeout %s max attempts %s\u0027"},{"line_number":559,"context_line":"            LOG.debug(msg, attempt, timeout, retry)"},{"line_number":560,"context_line":"            if timeout:"},{"line_number":561,"context_line":"                time.sleep(timeout)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_c3f5c683","line":558,"updated":"2015-11-03 16:07:44.000000000","message":"Use named positional arguments since more than one variable being formatted.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":560,"context_line":"            if timeout:"},{"line_number":561,"context_line":"                time.sleep(timeout)"},{"line_number":562,"context_line":"            attempt +\u003d 1"},{"line_number":563,"context_line":"        msg \u003d (_(\u0027No disk found for location %s\u0027) % location)"},{"line_number":564,"context_line":"        LOG.exception(msg)"},{"line_number":565,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":566,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_232b72ed","line":563,"updated":"2015-11-03 16:07:44.000000000","message":"Outer () not needed.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":579,"context_line":"                msg \u003d \u0027Found pmachineguid %s for Hostname %s\u0027"},{"line_number":580,"context_line":"                LOG.debug(msg, item[0], hostname)"},{"line_number":581,"context_line":"                return item[0]"},{"line_number":582,"context_line":"        msg \u003d (_(\u0027No PMachine guid found for Hostname %s\u0027), hostname)"},{"line_number":583,"context_line":"        LOG.exception(msg)"},{"line_number":584,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":585,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_231292b5","line":582,"updated":"2015-11-03 16:07:44.000000000","message":"Outer () not needed. In this case need to change the , to % since you are doing string formatting in place to be able to pass in to the exception.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":588,"context_line":""},{"line_number":589,"context_line":"        :return VDisk: OVS DAL model object"},{"line_number":590,"context_line":"        \"\"\""},{"line_number":591,"context_line":"        LOG.debug(\u0027[_FIND OVS DISK] Snapshotid %s\u0027 % snapshotid)"},{"line_number":592,"context_line":"        for disk in vdisklist.VDiskList.get_vdisks():"},{"line_number":593,"context_line":"            snaps_guid \u003d [s[\u0027guid\u0027] for s in disk.snapshots]"},{"line_number":594,"context_line":"            if str(snapshotid) in snaps_guid:"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_a3268214","line":591,"updated":"2015-11-03 16:07:44.000000000","message":"% \u003e ,","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":595,"context_line":"                LOG.debug(\u0027[_FIND OVS DISK] Snapshot id %s Disk found %s\u0027,"},{"line_number":596,"context_line":"                          snapshotid, disk)"},{"line_number":597,"context_line":"                return disk"},{"line_number":598,"context_line":"        msg \u003d (_(\u0027No disk found for snapshotid %s\u0027), snapshotid)"},{"line_number":599,"context_line":"        LOG.exception(msg)"},{"line_number":600,"context_line":"        raise exception.VolumeBackendAPIException(data\u003dmsg)"},{"line_number":601,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_e3824ac8","line":598,"updated":"2015-11-03 16:07:44.000000000","message":"Outer () not needed.","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"41bad1027521f681515ef5ce5c2d33e1ef4722a1","unresolved":false,"context_lines":[{"line_number":604,"context_line":""},{"line_number":605,"context_line":"        :return True/False"},{"line_number":606,"context_line":"        \"\"\""},{"line_number":607,"context_line":"        LOG.debug(\u0027[_FIND CHILDREN OF SNAPSHOT] Snapshotid %s\u0027 % snapshotid)"},{"line_number":608,"context_line":"        if hasattr(vdisklist.VDiskList, \u0027get_by_parentsnapshot\u0027):"},{"line_number":609,"context_line":"            return len(vdisklist.VDiskList."},{"line_number":610,"context_line":"                       get_by_parentsnapshot(snapshotid)) \u003e 0"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa80f949_83749efd","line":607,"updated":"2015-11-03 16:07:44.000000000","message":"% \u003e ,","commit_id":"e108421811a0160ee382e274e9a1aef44360fda2"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"dd0ff49ac16b64e6abfb175b45a58515ef828ca0","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"# Workaround for non-FHS OpenvStorage installation path"},{"line_number":22,"context_line":"import sys"},{"line_number":23,"context_line":"sys.path.append(\u0027/opt/OpenvStorage\u0027)"},{"line_number":24,"context_line":"import socket"},{"line_number":25,"context_line":"import time"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_7b203af8","line":23,"updated":"2015-11-03 20:02:37.000000000","message":"This doesn\u0027t seem like a sane thing to do here.  I would suggest the OpenvStorage libs be installed in the standard python locations.   If they can\u0027t be, then the sys.path.append should only be done inside the try block below when we aren\u0027t intentionally mocking out the libs themselves.","commit_id":"2f467d2abfffb905a85e7a307a55f510faa142e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"dd0ff49ac16b64e6abfb175b45a58515ef828ca0","unresolved":false,"context_lines":[{"line_number":54,"context_line":"HELP \u003d \u0027Vpool to use for volumes - backend is defined by vpool not by us.\u0027"},{"line_number":55,"context_line":"OPTS \u003d [cfg.StrOpt(\u0027vpool_name\u0027,"},{"line_number":56,"context_line":"                   default \u003d \u0027\u0027,"},{"line_number":57,"context_line":"                   help \u003d HELP)]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"},{"line_number":60,"context_line":"CONF.register_opts(OPTS)"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_5b7e96e5","line":57,"updated":"2015-11-03 20:02:37.000000000","message":"Just put the HELP inline, it\u0027s not used anywhere else.","commit_id":"2f467d2abfffb905a85e7a307a55f510faa142e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"dd0ff49ac16b64e6abfb175b45a58515ef828ca0","unresolved":false,"context_lines":[{"line_number":310,"context_line":"        data[\u0027volume_backend_name\u0027] \u003d self._vpool_name"},{"line_number":311,"context_line":"        data[\u0027vendor_name\u0027] \u003d \u0027Open vStorage\u0027"},{"line_number":312,"context_line":"        data[\u0027driver_version\u0027] \u003d self.VERSION"},{"line_number":313,"context_line":"        data[\u0027storage_protocol\u0027] \u003d \u0027OVS\u0027"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":316,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027unknown\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_5bcc5635","line":313,"updated":"2015-11-03 20:02:37.000000000","message":"you say OVS here, but in initialize_connection the protocol is file?   Shouldn\u0027t we be consistent ?","commit_id":"2f467d2abfffb905a85e7a307a55f510faa142e0"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"dd0ff49ac16b64e6abfb175b45a58515ef828ca0","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        data[\u0027total_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":316,"context_line":"        data[\u0027free_capacity_gb\u0027] \u003d \u0027unknown\u0027"},{"line_number":317,"context_line":"        data[\u0027reserved_percentage\u0027] \u003d 0"},{"line_number":318,"context_line":"        data[\u0027QoS_support\u0027] \u003d False"},{"line_number":319,"context_line":"        return data"},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_9b907eee","line":317,"updated":"2015-11-03 20:02:37.000000000","message":"by reporting unknown and reserved_percentage \u003d 0,  The scheduler will never stop sending provisioning requests to the driver.   You could run out of space.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/scheduler/filters/capacity_filter.py#L53-L67","commit_id":"2f467d2abfffb905a85e7a307a55f510faa142e0"},{"author":{"_account_id":16917,"name":"Alex O\u0027Rourke","email":"alex.orourke@hpe.com","username":"aorourke"},"change_message_id":"88c1a20ce9231fef3e8f989ccfdc567dd354dccd","unresolved":false,"context_lines":[{"line_number":672,"context_line":"            if snapshot_id is None:"},{"line_number":673,"context_line":"                raise RuntimeError(\u0027No snapshot showed up\u0027)"},{"line_number":674,"context_line":"            raise RuntimeError(\u0027Snapshot {0} did not show up\u0027"},{"line_number":675,"context_line":"                               .format(snapshot_id))"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa80f949_8a9fca5e","line":675,"updated":"2015-11-03 18:31:24.000000000","message":"I guess you need a new line for pep8 to start complaining. Add that in the newest patchset.","commit_id":"2f467d2abfffb905a85e7a307a55f510faa142e0"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fd073b82103372fd8089fbb0c4ab7ba7c018d9ab","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 iNuron NV"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_f9ebab76","line":1,"updated":"2015-11-04 18:10:05.000000000","message":"I saw comments earlier about the license. This needs to be changed to use apache 2 before it can be merged.  Not sure what is the issue here.  I assume this had apache 2 license when it was merged previously?","commit_id":"5e79578b395355f2338fcc360173823a3a54649b"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"f73dafb73285d1787946373f3fd4b3fb29813e23","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 iNuron NV"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_94ed81f1","line":1,"in_reply_to":"fa80f949_f9ebab76","updated":"2015-11-04 19:28:37.000000000","message":"It says right here, next line:\nLicensed under the Apache License, Version 2.0","commit_id":"5e79578b395355f2338fcc360173823a3a54649b"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"fd073b82103372fd8089fbb0c4ab7ba7c018d9ab","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # Volume operations"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":97,"context_line":"        \"\"\"Allow connection to connector and return connection info."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        Volume is a .raw file on a virtual filesystem."}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_394e1397","line":96,"updated":"2015-11-04 18:10:05.000000000","message":"Which libvirt volume driver does this driver use for attach/detach in Nova?  I don\u0027t see any protocol named \u0027file\u0027 there.  Maybe I\u0027m missing something.\n\nhttps://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L319","commit_id":"5e79578b395355f2338fcc360173823a3a54649b"},{"author":{"_account_id":13101,"name":"Eduard Biceri-Matei","email":"cubusbacau@yahoo.com","username":"eduardbicerimatei"},"change_message_id":"f73dafb73285d1787946373f3fd4b3fb29813e23","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    # Volume operations"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def initialize_connection(self, volume, connector):"},{"line_number":97,"context_line":"        \"\"\"Allow connection to connector and return connection info."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        Volume is a .raw file on a virtual filesystem."}],"source_content_type":"text/x-python","patch_set":7,"id":"fa80f949_14b431cf","line":96,"in_reply_to":"fa80f949_394e1397","updated":"2015-11-04 19:28:37.000000000","message":"We had this review pending https://review.openstack.org/#/c/134134/\nMeanwhile, as a workaround, this driver used to return \"local\".\nI\u0027ll revert to \"local\" until the nova blueprint is approved.","commit_id":"5e79578b395355f2338fcc360173823a3a54649b"},{"author":{"_account_id":17405,"name":"Jacob Gregor","email":"jgregor@us.ibm.com","username":"jgregor"},"change_message_id":"7214db53485f1c34d546e3b22733f06ac92883fb","unresolved":false,"context_lines":[{"line_number":57,"context_line":"                          \u0027backend is defined by vpool not by us.\u0027)]"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"CONF \u003d cfg.CONF"},{"line_number":60,"context_line":"CONF.register_opts(OPTS)"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"# Utils"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa80f949_a4afda28","line":60,"updated":"2015-11-06 15:46:54.000000000","message":"Since we are registering new config options here(OPTS), we need to add a DocImpact tag to the commit message so that the documentation team can note that there is an update to documentation.","commit_id":"c4b55b2a9ceb0a57c678ff90a60c0be3bc47147d"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        :param image_service: image service reference"},{"line_number":159,"context_line":"        :param image_id: id of the image"},{"line_number":160,"context_line":"        \"\"\""},{"line_number":161,"context_line":"        LOG.debug(\"CP_IMG_TO_VOL %s %s\", image_service, image_id)"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        name \u003d volume.display_name"},{"line_number":164,"context_line":"        if not name:"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_8a256dac","line":161,"updated":"2015-11-09 14:21:32.000000000","message":"Should really used named positional arguments when formatting more than on variable, but not critical in this case.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":231,"context_line":"                      source_ovs_disk.devicename)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"            # Cloning from a template"},{"line_number":234,"context_line":"            LOG.debug(\u0027[CREATE FROM TEMPLATE] ovs_disk %s \u0027,"},{"line_number":235,"context_line":"                      source_ovs_disk.devicename)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"            disk_meta \u003d vdisklib.VDiskController.create_from_template("}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_aa74f19b","line":234,"updated":"2015-11-09 14:21:32.000000000","message":"Extra space at the end should be removed.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            vdisk \u003d vdiskhybrid.VDisk(disk_meta[\u0027diskguid\u0027])"},{"line_number":249,"context_line":"            vdisk.cinder_id \u003d volume.id"},{"line_number":250,"context_line":"            vdisk.name \u003d name"},{"line_number":251,"context_line":"            LOG.debug(\u0027[CREATE FROM TEMPLATE] Updating meta %s %s\u0027,"},{"line_number":252,"context_line":"                      volume.id, name)"},{"line_number":253,"context_line":"            vdisk.save()"},{"line_number":254,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_2a69e1be","line":251,"updated":"2015-11-09 14:21:32.000000000","message":"Named arguments.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                            \u0027machineguid\u0027: source_ovs_disk.vmachine_guid,"},{"line_number":270,"context_line":"                            \u0027is_automatic\u0027: False}"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"                LOG.debug(\u0027CREATE_SNAP %s %s\u0027, name, metadata)"},{"line_number":273,"context_line":"                snapshotid \u003d vdisklib.VDiskController.create_snapshot("},{"line_number":274,"context_line":"                    diskguid \u003d source_ovs_disk.guid,"},{"line_number":275,"context_line":"                    metadata \u003d metadata,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_8aaa4dd3","line":272,"updated":"2015-11-09 14:21:32.000000000","message":"Named arguments.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                OVSVolumeDriver._wait_for_snapshot(source_ovs_disk, snapshotid)"},{"line_number":280,"context_line":"            else:"},{"line_number":281,"context_line":"                snapshotid \u003d available_snapshots[-1][\u0027guid\u0027]"},{"line_number":282,"context_line":"            LOG.debug(\u0027[CREATE CLONE FROM SNAP] %s \u0027, snapshotid)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"            disk_meta \u003d vdisklib.VDiskController.clone("},{"line_number":285,"context_line":"                diskguid \u003d source_ovs_disk.guid,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_eab9992f","line":282,"updated":"2015-11-09 14:21:32.000000000","message":"Extra space at the end should be removed.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":339,"context_line":"                    \u0027machineguid\u0027: ovs_disk.vmachine_guid,"},{"line_number":340,"context_line":"                    \u0027is_automatic\u0027: False}"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"        LOG.debug(\u0027CREATE_SNAP %s %s\u0027, snapshot.display_name,"},{"line_number":343,"context_line":"                  metadata)"},{"line_number":344,"context_line":"        vdisklib.VDiskController.create_snapshot(diskguid \u003d ovs_disk.guid,"},{"line_number":345,"context_line":"                                                 metadata \u003d metadata,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_ca87f55f","line":342,"updated":"2015-11-09 14:21:32.000000000","message":"Named arguments.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":396,"context_line":"        pmachineguid \u003d self._find_ovs_model_pmachine_guid_by_hostname("},{"line_number":397,"context_line":"            volume.host)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"        LOG.debug(\u0027[CLONE FROM SNAP] %s %s %s %s\u0027,"},{"line_number":400,"context_line":"                  ovs_snap_disk.guid, snapshot.id, devicename, pmachineguid)"},{"line_number":401,"context_line":"        try:"},{"line_number":402,"context_line":"            kwargs \u003d dict(diskguid \u003d ovs_snap_disk.guid,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_4a94658a","line":399,"updated":"2015-11-09 14:21:32.000000000","message":"Named arguments.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":422,"context_line":"            vdisk.name \u003d devicename"},{"line_number":423,"context_line":"            vdisk.save()"},{"line_number":424,"context_line":"        except Exception as ex:"},{"line_number":425,"context_line":"            LOG.error(_LE(\u0027CLONE FROM SNAP: Internal error %s \u0027), ex)"},{"line_number":426,"context_line":"            self.delete_volume(volume)"},{"line_number":427,"context_line":"            raise"},{"line_number":428,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_6aca89a3","line":425,"updated":"2015-11-09 14:21:32.000000000","message":"Extra space on the end. Could also switch this to LOG.exception and get rid of the ex variable to have effectively the same things.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":484,"context_line":"        The volume is a .raw file on a virtual filesystem."},{"line_number":485,"context_line":"        Connection is always allowed based on POSIX permissions."},{"line_number":486,"context_line":"        \"\"\""},{"line_number":487,"context_line":"        LOG.debug(\u0027TERM_CONN %s %s \u0027, six.text_type(connector), force)"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"    def check_for_setup_error(self):"},{"line_number":490,"context_line":"        \"\"\"Validate driver setup.\"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_8a46cd21","line":487,"updated":"2015-11-09 14:21:32.000000000","message":"Named args and extra space.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":540,"context_line":"        :return VDisk: OVS DAL model object"},{"line_number":541,"context_line":"        \"\"\""},{"line_number":542,"context_line":"        hostname \u003d self._get_real_hostname(hostname)"},{"line_number":543,"context_line":"        LOG.debug(\u0027[_FIND OVS DISK] Location %s, hostname %s\u0027,"},{"line_number":544,"context_line":"                  location, hostname)"},{"line_number":545,"context_line":"        attempt \u003d 0"},{"line_number":546,"context_line":"        while attempt \u003c\u003d retry:"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_4a70e572","line":543,"updated":"2015-11-09 14:21:32.000000000","message":"Named args.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":551,"context_line":"                            _location \u003d \"{0}/{1}\".format(vsr.mountpoint,"},{"line_number":552,"context_line":"                                                         vd.devicename)"},{"line_number":553,"context_line":"                            if _location \u003d\u003d location:"},{"line_number":554,"context_line":"                                LOG.debug(\u0027Location %s Disk found %s\u0027,"},{"line_number":555,"context_line":"                                          location, vd.guid)"},{"line_number":556,"context_line":"                                disk \u003d vdiskhybrid.VDisk(vd.guid)"},{"line_number":557,"context_line":"                                return disk"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_0a6add80","line":554,"updated":"2015-11-09 14:21:32.000000000","message":"Named args.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":555,"context_line":"                                          location, vd.guid)"},{"line_number":556,"context_line":"                                disk \u003d vdiskhybrid.VDisk(vd.guid)"},{"line_number":557,"context_line":"                                return disk"},{"line_number":558,"context_line":"            msg \u003d \u0027NO RESULT Attempt %s timeout %s max attempts %s\u0027"},{"line_number":559,"context_line":"            LOG.debug(msg, attempt, timeout, retry)"},{"line_number":560,"context_line":"            if timeout:"},{"line_number":561,"context_line":"                time.sleep(timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_6a0fe9e1","line":558,"updated":"2015-11-09 14:21:32.000000000","message":"Named args.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":570,"context_line":"        :return guid: GUID"},{"line_number":571,"context_line":"        \"\"\""},{"line_number":572,"context_line":"        hostname \u003d self._get_real_hostname(hostname)"},{"line_number":573,"context_line":"        LOG.debug(\u0027[_FIND OVS PMACHINE] Hostname %s\u0027 % (hostname))"},{"line_number":574,"context_line":"        mapping \u003d [(pm.guid, six.text_type(sr.name))"},{"line_number":575,"context_line":"                   for pm in pmachinelist.PMachineList.get_pmachines()"},{"line_number":576,"context_line":"                   for sr in pm.storagerouters]"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_ea03d9b6","line":573,"updated":"2015-11-09 14:21:32.000000000","message":"% \u003e ,","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":576,"context_line":"                   for sr in pm.storagerouters]"},{"line_number":577,"context_line":"        for item in mapping:"},{"line_number":578,"context_line":"            if item[1] \u003d\u003d hostname:"},{"line_number":579,"context_line":"                msg \u003d \u0027Found pmachineguid %s for Hostname %s\u0027"},{"line_number":580,"context_line":"                LOG.debug(msg, item[0], hostname)"},{"line_number":581,"context_line":"                return item[0]"},{"line_number":582,"context_line":"        msg \u003d _(\u0027No PMachine guid found for Hostname %s\u0027) % hostname"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_6a26096a","line":579,"updated":"2015-11-09 14:21:32.000000000","message":"Named args.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":592,"context_line":"        for disk in vdisklist.VDiskList.get_vdisks():"},{"line_number":593,"context_line":"            snaps_guid \u003d [s[\u0027guid\u0027] for s in disk.snapshots]"},{"line_number":594,"context_line":"            if snapshotid in snaps_guid:"},{"line_number":595,"context_line":"                LOG.debug(\u0027[_FIND OVS DISK] Snapshot id %s Disk found %s\u0027,"},{"line_number":596,"context_line":"                          snapshotid, disk)"},{"line_number":597,"context_line":"                return disk"},{"line_number":598,"context_line":"        msg \u003d _(\u0027No disk found for snapshotid %s\u0027) % snapshotid"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_ea1af916","line":595,"updated":"2015-11-09 14:21:32.000000000","message":"Named args.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    def _ensure_volume_is_gone(self, location, hostname, retry\u003d3,"},{"line_number":618,"context_line":"                               timeout\u003d3):"},{"line_number":619,"context_line":"        \"\"\"Make sure OVS disk object (based on location and hostname)"},{"line_number":620,"context_line":""},{"line_number":621,"context_line":"        cannot be found anymore"},{"line_number":622,"context_line":"        :raise VolumeBackendAPIException"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_aabab1df","line":619,"updated":"2015-11-09 14:21:32.000000000","message":"Not really formatted right for a docstring. The first line should be a summary, followed by a blank line, then some description. Not a description broken up by a blank line.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":622,"context_line":"        :raise VolumeBackendAPIException"},{"line_number":623,"context_line":"        \"\"\""},{"line_number":624,"context_line":"        hostname \u003d self._get_real_hostname(hostname)"},{"line_number":625,"context_line":"        LOG.debug(\u0027[_FIND OVS DISK GONE] Location %s, hostname %s\u0027,"},{"line_number":626,"context_line":"                  location, hostname)"},{"line_number":627,"context_line":"        attempt \u003d 0"},{"line_number":628,"context_line":"        while attempt \u003c\u003d retry:"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_6ab4c9f1","line":625,"updated":"2015-11-09 14:21:32.000000000","message":"Named args.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":634,"context_line":"                            _location \u003d \"{0}/{1}\".format(vsr.mountpoint,"},{"line_number":635,"context_line":"                                                         vd.devicename)"},{"line_number":636,"context_line":"                            if _location \u003d\u003d location:"},{"line_number":637,"context_line":"                                LOG.debug(\u0027Location %s Disk found %s\u0027,"},{"line_number":638,"context_line":"                                          location, vd.guid)"},{"line_number":639,"context_line":"                                if timeout:"},{"line_number":640,"context_line":"                                    time.sleep(timeout)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_2acfa180","line":637,"updated":"2015-11-09 14:21:32.000000000","message":"Named args.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    @staticmethod"},{"line_number":651,"context_line":"    def _wait_for_snapshot(disk, snapshot_id\u003dNone, tries\u003d60):"},{"line_number":652,"context_line":"        \"\"\"Waits for a given snapshot (or any) to be available in the backend"},{"line_number":653,"context_line":""},{"line_number":654,"context_line":"        (so it can be used for clones)"},{"line_number":655,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_0ac65d67","line":652,"updated":"2015-11-09 14:21:32.000000000","message":"Same for docstring as above.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":667,"context_line":"                LOG.debug(\u0027Waiting for a snapshot to become available\u0027)"},{"line_number":668,"context_line":"            else:"},{"line_number":669,"context_line":"                LOG.debug(\u0027Waiting for snapshot {0} to become available\u0027"},{"line_number":670,"context_line":"                          .format(snapshot_id))"},{"line_number":671,"context_line":"            tries -\u003d 1"},{"line_number":672,"context_line":"            time.sleep(60 - tries)"},{"line_number":673,"context_line":"            snapshots \u003d load()"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_8a87ad0e","line":670,"updated":"2015-11-09 14:21:32.000000000","message":"Don\u0027t use .format(). Pass in snapshot_id to logger to have it do the formatting later if and when needed.","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":673,"context_line":"            snapshots \u003d load()"},{"line_number":674,"context_line":"        if tries \u003d\u003d 0 and len(snapshots) \u003d\u003d 0:"},{"line_number":675,"context_line":"            if snapshot_id is None:"},{"line_number":676,"context_line":"                raise RuntimeError(\u0027No snapshot showed up\u0027)"},{"line_number":677,"context_line":"            raise RuntimeError(\u0027Snapshot {0} did not show up\u0027"},{"line_number":678,"context_line":"                               .format(snapshot_id))"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_ea76793d","line":676,"updated":"2015-11-09 14:21:32.000000000","message":"Needs _().","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"0c6c2bd4ec5f01336220b6c19042175030475039","unresolved":false,"context_lines":[{"line_number":674,"context_line":"        if tries \u003d\u003d 0 and len(snapshots) \u003d\u003d 0:"},{"line_number":675,"context_line":"            if snapshot_id is None:"},{"line_number":676,"context_line":"                raise RuntimeError(\u0027No snapshot showed up\u0027)"},{"line_number":677,"context_line":"            raise RuntimeError(\u0027Snapshot {0} did not show up\u0027"},{"line_number":678,"context_line":"                               .format(snapshot_id))"}],"source_content_type":"text/x-python","patch_set":10,"id":"da85f559_aa8f1122","line":677,"updated":"2015-11-09 14:21:32.000000000","message":"Needs _().","commit_id":"dc847740c702e72d73774256ef468e2da4f0885e"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"73617ed755c58334cade41dd439201f43f609137","unresolved":false,"context_lines":[{"line_number":612,"context_line":""},{"line_number":613,"context_line":"    def _ensure_volume_is_gone(self, location, hostname, retry\u003d3,"},{"line_number":614,"context_line":"                               timeout\u003d3):"},{"line_number":615,"context_line":"        \"\"\"Make sure volume is gone"},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"        :raise VolumeBackendAPIException"},{"line_number":618,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":11,"id":"da85f559_5a5da013","line":615,"updated":"2015-11-11 14:50:15.000000000","message":"If you do another update, period needed at the end to be consistent.","commit_id":"69cab0689b40731b5702426be5417fdb46a6da4f"},{"author":{"_account_id":11904,"name":"Sean McGinnis","email":"sean.mcginnis@gmail.com","username":"SeanM"},"change_message_id":"73617ed755c58334cade41dd439201f43f609137","unresolved":false,"context_lines":[{"line_number":654,"context_line":"            if snapshot_id is None:"},{"line_number":655,"context_line":"                LOG.debug(\u0027Waiting for a snapshot to become available\u0027)"},{"line_number":656,"context_line":"            else:"},{"line_number":657,"context_line":"                LOG.debug(\u0027Waiting for snapshot {0} to become available\u0027,"},{"line_number":658,"context_line":"                          snapshot_id)"},{"line_number":659,"context_line":"            tries -\u003d 1"},{"line_number":660,"context_line":"            time.sleep(60 - tries)"}],"source_content_type":"text/x-python","patch_set":11,"id":"da85f559_3a321cf3","line":657,"updated":"2015-11-11 14:50:15.000000000","message":"This needs to be %s now instead of {0}. I believe this will actually cause an exception as it is.","commit_id":"69cab0689b40731b5702426be5417fdb46a6da4f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5919dae45aee05286abbacab4f59868af9a5057b","unresolved":false,"context_lines":[{"line_number":501,"context_line":"        pass"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    # Internal"},{"line_number":504,"context_line":"    def _get_real_hostname(self, hostname):"},{"line_number":505,"context_line":"        LOG.debug(\u0027[_GET REAL HOSTNAME] Hostname %s\u0027, hostname)"},{"line_number":506,"context_line":"        if not hostname:"},{"line_number":507,"context_line":"            return socket.gethostname()"}],"source_content_type":"text/x-python","patch_set":14,"id":"da85f559_d8926af6","line":504,"updated":"2015-11-13 20:25:17.000000000","message":"Please use extract_host in utils.  There\u0027s no need to define another function inside the driver for this.\n\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/utils.py#L574","commit_id":"25e51b78158acdcaab10b0edaf8ea799751f9b10"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5919dae45aee05286abbacab4f59868af9a5057b","unresolved":false,"context_lines":[{"line_number":661,"context_line":"            snapshots \u003d load()"},{"line_number":662,"context_line":"        if tries \u003d\u003d 0 and len(snapshots) \u003d\u003d 0:"},{"line_number":663,"context_line":"            if snapshot_id is None:"},{"line_number":664,"context_line":"                raise RuntimeError(_(\u0027No snapshot showed up\u0027))"},{"line_number":665,"context_line":"            raise RuntimeError(_(\u0027Snapshot {0} did not show up\u0027)"},{"line_number":666,"context_line":"                               .format(snapshot_id))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da85f559_58119a5c","line":664,"updated":"2015-11-13 20:25:17.000000000","message":"Please use a more specific exception, i.e. exception.InvalidSnapshot or exception.InvalidInput","commit_id":"25e51b78158acdcaab10b0edaf8ea799751f9b10"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"5919dae45aee05286abbacab4f59868af9a5057b","unresolved":false,"context_lines":[{"line_number":662,"context_line":"        if tries \u003d\u003d 0 and len(snapshots) \u003d\u003d 0:"},{"line_number":663,"context_line":"            if snapshot_id is None:"},{"line_number":664,"context_line":"                raise RuntimeError(_(\u0027No snapshot showed up\u0027))"},{"line_number":665,"context_line":"            raise RuntimeError(_(\u0027Snapshot {0} did not show up\u0027)"},{"line_number":666,"context_line":"                               .format(snapshot_id))"}],"source_content_type":"text/x-python","patch_set":14,"id":"da85f559_9325a5af","line":665,"updated":"2015-11-13 20:25:17.000000000","message":"I think VolumeBackendAPIException is more appropriate here.","commit_id":"25e51b78158acdcaab10b0edaf8ea799751f9b10"}]}
