)]}'
{"cinder/volume/drivers/infinidat.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"eee3de2963a6da9651b8a3406c01c0ad0de1302d","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        snapshot_id \u003d uuidutils.generate_uuid() + \"-internal\""},{"line_number":288,"context_line":"        snapshot \u003d dict(id\u003dsnapshot_id, volume\u003dsrc_vref)"},{"line_number":289,"context_line":"        self.create_snapshot(snapshot)"},{"line_number":290,"context_line":"        self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def create_export(self, context, volume, connector\u003dNone):"},{"line_number":293,"context_line":"        \"\"\"Exports the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_0ecacca1","line":290,"range":{"start_line":290,"start_character":0,"end_line":290,"end_character":58},"updated":"2016-08-14 13:30:17.000000000","message":"How does the snapshot get cleaned up in this case? Also, for a cloned volume, the original volume must be able to be deleted, does that match your internals?","commit_id":"9879769efe5c422f8d46cdb24967684fa905470e"},{"author":{"_account_id":22683,"name":"Arnon Yaari","email":"arnony@infinidat.com","username":"arnony"},"change_message_id":"13b70b4131bcd518914811b2e82981aae371f828","unresolved":false,"context_lines":[{"line_number":287,"context_line":"        snapshot_id \u003d uuidutils.generate_uuid() + \"-internal\""},{"line_number":288,"context_line":"        snapshot \u003d dict(id\u003dsnapshot_id, volume\u003dsrc_vref)"},{"line_number":289,"context_line":"        self.create_snapshot(snapshot)"},{"line_number":290,"context_line":"        self.create_volume_from_snapshot(volume, snapshot)"},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"    def create_export(self, context, volume, connector\u003dNone):"},{"line_number":293,"context_line":"        \"\"\"Exports the volume.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_901a4a6d","line":290,"range":{"start_line":290,"start_character":0,"end_line":290,"end_character":58},"in_reply_to":"3ac371cc_0ecacca1","updated":"2016-08-15 08:06:37.000000000","message":"Hi Duncan. This is a good point. I thought about this but maybe not hard enough :) Deleting the root volume deletes all its children (this is what approved\u003dtrue means, it confirms this \"dangerous\" operation).\nIf the cloned volume should exist even if deleting the parent volume, then the delete function should fail when trying to delete the parent volume, and deleting the clone should automatically delete its parent if it is internal. I will fix this.","commit_id":"9879769efe5c422f8d46cdb24967684fa905470e"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"c3c3421f07efd7e00339813177bb66db23e904f0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# INFINIDAT InfiniBox Volume Driver"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from cinder import exception"},{"line_number":21,"context_line":"from cinder import interface"},{"line_number":22,"context_line":"from cinder.volume import driver"},{"line_number":23,"context_line":"import logging"},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":"from oslo_utils import units"},{"line_number":26,"context_line":"from oslo_utils import uuidutils"},{"line_number":27,"context_line":"import requests"},{"line_number":28,"context_line":"from six import text_type"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_e1dab377","line":28,"range":{"start_line":20,"start_character":0,"end_line":28,"end_character":25},"updated":"2016-08-15 19:03:00.000000000","message":"http://docs.openstack.org/developer/hacking/#import-order-template","commit_id":"427795933abc06261eedd17c84f8bab4270f9075"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"c3c3421f07efd7e00339813177bb66db23e904f0","unresolved":false,"context_lines":[{"line_number":39,"context_line":"               choices\u003d[\u0027thick\u0027, \u0027thin\u0027],"},{"line_number":40,"context_line":"               default\u003d\u0027thick\u0027,"},{"line_number":41,"context_line":"               help\u003d\u0027Provisioning type\u0027),"},{"line_number":42,"context_line":"    cfg.StrOpt(\u0027infinidat_management_address\u0027,"},{"line_number":43,"context_line":"               help\u003d\u0027IP address of InfiniBox array\u0027),"},{"line_number":44,"context_line":"    cfg.StrOpt(\u0027infinidat_username\u0027,"},{"line_number":45,"context_line":"               help\u003d\u0027Username for InfiniBox array\u0027),"},{"line_number":46,"context_line":"    cfg.StrOpt(\u0027infinidat_password\u0027,"},{"line_number":47,"context_line":"               help\u003d\u0027Password for InfiniBox array\u0027,"},{"line_number":48,"context_line":"               secret\u003dTrue)"},{"line_number":49,"context_line":"]"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_c135f746","line":48,"range":{"start_line":42,"start_character":1,"end_line":48,"end_character":27},"updated":"2016-08-15 19:03:00.000000000","message":"better to use already defined option\nhttps://github.com/openstack/cinder/blob/master/cinder/volume/drivers/kaminario/kaminario_common.py#L154\n\nBut lets see what others think on this","commit_id":"427795933abc06261eedd17c84f8bab4270f9075"},{"author":{"_account_id":16258,"name":"nikesh","email":"nike.niec@gmail.com","username":"nikem"},"change_message_id":"c3c3421f07efd7e00339813177bb66db23e904f0","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        pool_name \u003d self.configuration.infinidat_pool_name"},{"line_number":148,"context_line":"        pools \u003d self._get(\u0027pools?name\u003d{0}\u0027.format(pool_name))"},{"line_number":149,"context_line":"        if len(pools) !\u003d 1:"},{"line_number":150,"context_line":"            msg \u003d \u0027Pool \"{0}\" not found\u0027.format(pool_name)"},{"line_number":151,"context_line":"            LOG.error(msg)"},{"line_number":152,"context_line":"            raise exception.VolumeDriverException(msg)"},{"line_number":153,"context_line":"        return pools[0]"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def _get_or_create_host(self, wwpn):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_e15bd352","line":152,"range":{"start_line":150,"start_character":6,"end_line":152,"end_character":54},"updated":"2016-08-15 19:03:00.000000000","message":"please refer this guide if not\nhttp://docs.openstack.org/developer/oslo.i18n/guidelines.html","commit_id":"427795933abc06261eedd17c84f8bab4270f9075"}]}
