)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"52cd433688dc28f5afbfcb04e0dfb3cc8b85ab14","unresolved":false,"context_lines":[{"line_number":9,"context_line":"During automatic cleaning, the generic hardware manager erases the"},{"line_number":10,"context_line":"metadata on all block devices. If this is done on RAID members, the"},{"line_number":11,"context_line":"RAID device is destroyed. This patch proposes to exclude RAID members"},{"line_number":12,"context_line":"from metadata cleaning."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9ec7674925d981062c311cf34eadfe4cb891f077"},{"line_number":15,"context_line":"Story: #2004581"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_9d7a98ee","line":12,"updated":"2019-06-12 11:43:08.000000000","message":"why only metadata cleaning?","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"d9dde4d4afa8b5a45b0456650946e306b91cdf5d","unresolved":false,"context_lines":[{"line_number":9,"context_line":"During automatic cleaning, the generic hardware manager erases the"},{"line_number":10,"context_line":"metadata on all block devices. If this is done on RAID members, the"},{"line_number":11,"context_line":"RAID device is destroyed. This patch proposes to exclude RAID members"},{"line_number":12,"context_line":"from metadata cleaning."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9ec7674925d981062c311cf34eadfe4cb891f077"},{"line_number":15,"context_line":"Story: #2004581"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9fb8cfa7_9f436b42","line":12,"in_reply_to":"9fb8cfa7_9d7a98ee","updated":"2019-06-12 14:41:09.000000000","message":"Uuuh ... yes! Same issue: our local h/w manager overwrites the erase function.","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"}],"ironic_python_agent/hardware.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"11e00f8c16a7e670f849e5a82eb5177022113946","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            try:"},{"line_number":1005,"context_line":"                disk_utils.destroy_disk_metadata(dev.name, node[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_8eeca88f","line":1002,"range":{"start_line":999,"start_character":12,"end_line":1002,"end_character":24},"updated":"2019-06-12 06:40:04.000000000","message":"The \u0027automated\u0027 cleaning gets called upon node tear-down as well. With this change one will never be able to use \u0027erase_devices_metadata\u0027 when software raid is used.\nMay be should allow it to be used when its triggered through \u0027manual\u0027 cleaning. WDYT?","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"ede59a6be5db99877a40c46af7de69c3c566c5b4","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            try:"},{"line_number":1005,"context_line":"                disk_utils.destroy_disk_metadata(dev.name, node[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_d15d4a79","line":1002,"range":{"start_line":999,"start_character":12,"end_line":1002,"end_character":24},"in_reply_to":"9fb8cfa7_0d0d088f","updated":"2019-06-13 08:18:29.000000000","message":"Yes, exactly. Also: if you have md0 consisting of sda1 and sdb1, neither sda1/sdb1 (components) nor sda/sdb (holders) shall be cleaned.","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"3d5653d84f41d421dfad964d7aeeae0fbe229ab2","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            try:"},{"line_number":1005,"context_line":"                disk_utils.destroy_disk_metadata(dev.name, node[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_d7245f60","line":1002,"range":{"start_line":999,"start_character":12,"end_line":1002,"end_character":24},"in_reply_to":"9fb8cfa7_2e0fbc37","updated":"2019-06-13 03:42:42.000000000","message":"I tried with HPE Smart Storage, it did not corrupt the logical volumes. I think Smart Storage takes care of its metadata.","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"d50245d2a6c02874bd5c05ce43302cf4c7ade723","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            try:"},{"line_number":1005,"context_line":"                disk_utils.destroy_disk_metadata(dev.name, node[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_0d0d088f","line":1002,"range":{"start_line":999,"start_character":12,"end_line":1002,"end_character":24},"in_reply_to":"9fb8cfa7_4d6300b3","updated":"2019-06-13 07:19:56.000000000","message":"Let me check if I get this code right: when we have /dev/md0 consisting of /dev/sda and /dev/sdb, /dev/md0 will be cleaned, while /dev/sda and /dev/sdb will not. Is it right? Then I think we\u0027re good.","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7b79436f8c38126d04784e61ecf8868e4438395b","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            try:"},{"line_number":1005,"context_line":"                disk_utils.destroy_disk_metadata(dev.name, node[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_2e0fbc37","line":1002,"range":{"start_line":999,"start_character":12,"end_line":1002,"end_character":24},"in_reply_to":"9fb8cfa7_8eeca88f","updated":"2019-06-12 06:48:24.000000000","message":"Hmm ... I guess that\u0027s the same for a h/w RAID (which we use as a guideline), no?\n\nAlso: the delete_configuration step (which is to be triggered during manual cleanup) should erase the metadata of the underlying devices upon s/w RAID deletion.","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"ec5dcc3dc322b4db49945fd1c6b14472621ec589","unresolved":false,"context_lines":[{"line_number":996,"context_line":"                LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""},{"line_number":1004,"context_line":"            try:"},{"line_number":1005,"context_line":"                disk_utils.destroy_disk_metadata(dev.name, node[\u0027uuid\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_4d6300b3","line":1002,"range":{"start_line":999,"start_character":12,"end_line":1002,"end_character":24},"in_reply_to":"9fb8cfa7_d7245f60","updated":"2019-06-13 06:49:57.000000000","message":"I guess this is since the metadata is not stored on the devices directly, but inside the controller (or since the h/w RAID controller does not expose the underlying devices, so the IPA has no way to touch them).","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"11e00f8c16a7e670f849e5a82eb5177022113946","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"            out, _ \u003d utils.execute(\u0027lsblk\u0027, \u0027--fs\u0027, \u0027--noheadings\u0027,"},{"line_number":1068,"context_line":"                                   block_device.name)"},{"line_number":1069,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":1070,"context_line":"            LOG.error(\"Could not determine if %s is a RAID member: %s\","},{"line_number":1071,"context_line":"                      block_device.name, e)"},{"line_number":1072,"context_line":"            return True"},{"line_number":1073,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_6e59348c","line":1070,"range":{"start_line":1070,"start_character":16,"end_line":1070,"end_character":21},"updated":"2019-06-12 06:40:04.000000000","message":"Should this be \u0027warning\u0027 as we continue.","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"7b79436f8c38126d04784e61ecf8868e4438395b","unresolved":false,"context_lines":[{"line_number":1067,"context_line":"            out, _ \u003d utils.execute(\u0027lsblk\u0027, \u0027--fs\u0027, \u0027--noheadings\u0027,"},{"line_number":1068,"context_line":"                                   block_device.name)"},{"line_number":1069,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":1070,"context_line":"            LOG.error(\"Could not determine if %s is a RAID member: %s\","},{"line_number":1071,"context_line":"                      block_device.name, e)"},{"line_number":1072,"context_line":"            return True"},{"line_number":1073,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9fb8cfa7_4e0c7040","line":1070,"range":{"start_line":1070,"start_character":16,"end_line":1070,"end_character":21},"in_reply_to":"9fb8cfa7_6e59348c","updated":"2019-06-12 06:48:24.000000000","message":"Right, will fix this.","commit_id":"8418f39d5e4d8b1de8b663364731d29dd2ac82eb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"52cd433688dc28f5afbfcb04e0dfb3cc8b85ab14","unresolved":false,"context_lines":[{"line_number":946,"context_line":"        if self._is_virtual_media_device(block_device):"},{"line_number":947,"context_line":"            LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":948,"context_line":"                     block_device.name)"},{"line_number":949,"context_line":"            return"},{"line_number":950,"context_line":"        info \u003d node.get(\u0027driver_internal_info\u0027, {})"},{"line_number":951,"context_line":"        # Note(TheJulia) Use try/except to capture and log the failure"},{"line_number":952,"context_line":"        # and then revert to attempting to shred the volume if enabled."}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_3d260c17","line":949,"updated":"2019-06-12 11:43:08.000000000","message":"same here?","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"d9dde4d4afa8b5a45b0456650946e306b91cdf5d","unresolved":false,"context_lines":[{"line_number":946,"context_line":"        if self._is_virtual_media_device(block_device):"},{"line_number":947,"context_line":"            LOG.info(\"Skipping the erase of virtual media device %s\","},{"line_number":948,"context_line":"                     block_device.name)"},{"line_number":949,"context_line":"            return"},{"line_number":950,"context_line":"        info \u003d node.get(\u0027driver_internal_info\u0027, {})"},{"line_number":951,"context_line":"        # Note(TheJulia) Use try/except to capture and log the failure"},{"line_number":952,"context_line":"        # and then revert to attempting to shred the volume if enabled."}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_5f49735d","line":949,"in_reply_to":"9fb8cfa7_3d260c17","updated":"2019-06-12 14:41:09.000000000","message":"Done","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"52cd433688dc28f5afbfcb04e0dfb3cc8b85ab14","unresolved":false,"context_lines":[{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_dd1ed0b9","line":1000,"updated":"2019-06-12 11:43:08.000000000","message":"nit: RAID","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"d9dde4d4afa8b5a45b0456650946e306b91cdf5d","unresolved":false,"context_lines":[{"line_number":997,"context_line":"                         dev.name)"},{"line_number":998,"context_line":"                continue"},{"line_number":999,"context_line":"            if self._is_linux_raid_member(dev):"},{"line_number":1000,"context_line":"                LOG.info(\"Skipping the erase of raid member device %s\","},{"line_number":1001,"context_line":"                         dev.name)"},{"line_number":1002,"context_line":"                continue"},{"line_number":1003,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_7f447747","line":1000,"in_reply_to":"9fb8cfa7_dd1ed0b9","updated":"2019-06-12 14:41:09.000000000","message":"Done","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"52cd433688dc28f5afbfcb04e0dfb3cc8b85ab14","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        lines \u003d out.splitlines()"},{"line_number":1075,"context_line":"        for line in lines:"},{"line_number":1076,"context_line":"            if \u0027linux_raid_member\u0027 in line:"},{"line_number":1077,"context_line":"                return True"},{"line_number":1078,"context_line":"        return False"},{"line_number":1079,"context_line":""},{"line_number":1080,"context_line":"    def _get_ata_security_lines(self, block_device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_fd1b94c6","line":1077,"updated":"2019-06-12 11:43:08.000000000","message":"cannot you just do\n\n return \u0027linux_raid_member\u0027 in out\n\n?","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"},{"author":{"_account_id":11292,"name":"Arne Wiebalck","email":"Arne.Wiebalck@cern.ch","username":"wiebalck"},"change_message_id":"d9dde4d4afa8b5a45b0456650946e306b91cdf5d","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        lines \u003d out.splitlines()"},{"line_number":1075,"context_line":"        for line in lines:"},{"line_number":1076,"context_line":"            if \u0027linux_raid_member\u0027 in line:"},{"line_number":1077,"context_line":"                return True"},{"line_number":1078,"context_line":"        return False"},{"line_number":1079,"context_line":""},{"line_number":1080,"context_line":"    def _get_ata_security_lines(self, block_device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9fb8cfa7_4290bc4a","line":1077,"in_reply_to":"9fb8cfa7_fd1b94c6","updated":"2019-06-12 14:41:09.000000000","message":"Done","commit_id":"f3377cb0e92e63eb689aebbcd7e5a800944dacad"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4a8afa4198d77995694116a5ba4764914003b790","unresolved":false,"context_lines":[{"line_number":1074,"context_line":"        except processutils.ProcessExecutionError as e:"},{"line_number":1075,"context_line":"            LOG.warning(\"Could not determine if %s is a RAID member: %s\","},{"line_number":1076,"context_line":"                        block_device.name, e)"},{"line_number":1077,"context_line":"            return True"},{"line_number":1078,"context_line":""},{"line_number":1079,"context_line":"        return \u0027linux_raid_member\u0027 in out"},{"line_number":1080,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_b19d360b","line":1077,"updated":"2019-06-13 08:21:56.000000000","message":"I wonder if it\u0027s safe to do this.. I guess we expect lsblk to normally work, right?","commit_id":"48f9914ee7ef4d864bcd38b990ed44030d2a6f7e"}]}
