)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"fe15f819259d07de194e4cccadcc59d3748e5e95","unresolved":false,"context_lines":[{"line_number":22,"context_line":"inspect the disk and will still detect a remaining partition."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This commit makes use of the ironic-lib to do the clean up of the disk."},{"line_number":25,"context_line":"The additional review Id59fa5a06b9115c0f9afc09aae95daaac97e2fac increase"},{"line_number":26,"context_line":"the amount of data to wipe."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Instead of the initial patchset, we now add a \u0027wipe_root_device_metadata\u0027"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":13,"id":"1af94dfe_bbdfba38","line":25,"range":{"start_line":25,"start_character":22,"end_line":25,"end_character":63},"updated":"2016-03-18 15:34:29.000000000","message":"This change ID has been abandoned in favor of the I39637e22c344703ad48fc271f6f866aa018bbdd1","commit_id":"0498229880ce24f7aceab3063289ade117c73beb"}],"ironic_python_agent/extensions/iscsi.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0b4279015ab5a9a2c44d5596951b86ce0ab1fbd1","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"def _drop_partition_table(device):"},{"line_number":99,"context_line":"    # Ensure the local kernel forget any potential partition table before"},{"line_number":100,"context_line":"    # we inject a new one over iscsi"},{"line_number":101,"context_line":"    cmd \u003d [\u0027sgdisk\u0027, \u0027-Z\u0027, device]"},{"line_number":102,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":103,"context_line":"    cmd \u003d [\u0027dd\u0027, \u0027if\u003d/dev/zero\u0027, \u0027of\u003d\u0027 + device, \u0027bs\u003d1M\u0027, \u0027count\u003d10\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_4976403f","line":100,"updated":"2016-02-25 14:48:41.000000000","message":"nit: this should be a docstring\n\ne.g\n\n\"\"\"Destroy the disk data structures.\n\nEnsure that we don\u0027t have any potential partition tables before we create a new one over iSCSI.\n\nraises: ISCSICommandError\n\"\"\"","commit_id":"8192f0d107d6fbe702f295cd2f7f0b5383b63640"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"46be7d52003fa57a69d8b89c12a88e0b41fcd693","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    # we inject a new one over iscsi"},{"line_number":101,"context_line":"    cmd \u003d [\u0027sgdisk\u0027, \u0027-Z\u0027, device]"},{"line_number":102,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":103,"context_line":"    cmd \u003d [\u0027dd\u0027, \u0027if\u003d/dev/zero\u0027, \u0027of\u003d\u0027 + device, \u0027bs\u003d1M\u0027, \u0027count\u003d10\u0027]"},{"line_number":104,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_a8d0c6f8","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":69},"updated":"2016-02-25 04:00:59.000000000","message":"I did not get why sgdisk -Z is not sufficient here?\nsgdisk -Z claims http://linux.die.net/man/8/sgdisk :\n\u0027Z, --zap-all\nZap (destroy) the GPT and MBR data structures and then exit. This option works much like -z, but as it wipes the MBR as well as the GPT, it\u0027s more suitable if you want to repartition a disk after using this option, and completely unsuitable if you\u0027ve already repartitioned the disk.\u0027","commit_id":"8192f0d107d6fbe702f295cd2f7f0b5383b63640"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"0b4279015ab5a9a2c44d5596951b86ce0ab1fbd1","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    # we inject a new one over iscsi"},{"line_number":101,"context_line":"    cmd \u003d [\u0027sgdisk\u0027, \u0027-Z\u0027, device]"},{"line_number":102,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":103,"context_line":"    cmd \u003d [\u0027dd\u0027, \u0027if\u003d/dev/zero\u0027, \u0027of\u003d\u0027 + device, \u0027bs\u003d1M\u0027, \u0027count\u003d10\u0027]"},{"line_number":104,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_699fc4b4","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":69},"in_reply_to":"bae84128_62c88475","updated":"2016-02-25 14:48:41.000000000","message":"Talking to Goneri on IRC he mentioned that --zap-all is not enough (maybe because we can have different labels than GPT and msdos).\n\nAlso, I would like to point out that we have a function in ironic-lib that does destroy the disk metadata, it would be good if we could use the same here [0]\n\nWhat do you think Goneri? Perhaps we should add a dependency to ironic-lib (which is expected already) and use that function?\n\n[0] https://github.com/openstack/ironic-lib/blob/5e642ee4cb632f2f8035fa7c15c091a85df48bba/ironic_lib/disk_utils.py#L284","commit_id":"8192f0d107d6fbe702f295cd2f7f0b5383b63640"},{"author":{"_account_id":9268,"name":"Gonéri Le Bouder","email":"goneri@redhat.com","username":"goneri"},"change_message_id":"c3da33f3df8d84fb2ce4639e1ff06ad2cf33f177","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    # we inject a new one over iscsi"},{"line_number":101,"context_line":"    cmd \u003d [\u0027sgdisk\u0027, \u0027-Z\u0027, device]"},{"line_number":102,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":103,"context_line":"    cmd \u003d [\u0027dd\u0027, \u0027if\u003d/dev/zero\u0027, \u0027of\u003d\u0027 + device, \u0027bs\u003d1M\u0027, \u0027count\u003d10\u0027]"},{"line_number":104,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_84782dfa","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":69},"in_reply_to":"bae84128_699fc4b4","updated":"2016-02-25 14:58:33.000000000","message":"Sure, let\u0027s do this :)","commit_id":"8192f0d107d6fbe702f295cd2f7f0b5383b63640"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"dd9deb75d8a4c5fc03eabbef7839a86df4f0c23a","unresolved":false,"context_lines":[{"line_number":100,"context_line":"    # we inject a new one over iscsi"},{"line_number":101,"context_line":"    cmd \u003d [\u0027sgdisk\u0027, \u0027-Z\u0027, device]"},{"line_number":102,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":103,"context_line":"    cmd \u003d [\u0027dd\u0027, \u0027if\u003d/dev/zero\u0027, \u0027of\u003d\u0027 + device, \u0027bs\u003d1M\u0027, \u0027count\u003d10\u0027]"},{"line_number":104,"context_line":"    _execute(cmd, \"Failed to clean up the partition table\")"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"bae84128_62c88475","line":103,"range":{"start_line":103,"start_character":5,"end_line":103,"end_character":69},"in_reply_to":"bae84128_a8d0c6f8","updated":"2016-02-25 12:42:35.000000000","message":"+1, also why do you zap 10M via dd?","commit_id":"8192f0d107d6fbe702f295cd2f7f0b5383b63640"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"6b41dd92c2fb59cbbc1d95855c24eea2d62f2bd4","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class ISCSIExtension(base.BaseAgentExtension):"},{"line_number":139,"context_line":"    def __init__(self, agent):"},{"line_number":140,"context_line":"        base.BaseAgentExtension.__init__(self, agent)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @base.sync_command(\u0027start_iscsi_target\u0027)"},{"line_number":143,"context_line":"    def start_iscsi_target(self, iqn\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_00519f0e","line":140,"updated":"2016-03-02 08:51:58.000000000","message":"this is not needed (also you should be using super(..) syntax)","commit_id":"32184ea166c63936edbb9ab5ac4a511cefb4ad5f"},{"author":{"_account_id":9268,"name":"Gonéri Le Bouder","email":"goneri@redhat.com","username":"goneri"},"change_message_id":"27af982fccd4c73db13a5602fe49760f3ed333bf","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class ISCSIExtension(base.BaseAgentExtension):"},{"line_number":139,"context_line":"    def __init__(self, agent):"},{"line_number":140,"context_line":"        base.BaseAgentExtension.__init__(self, agent)"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"    @base.sync_command(\u0027start_iscsi_target\u0027)"},{"line_number":143,"context_line":"    def start_iscsi_target(self, iqn\u003dNone):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7af24918_0986d1b8","line":140,"in_reply_to":"7af24918_00519f0e","updated":"2016-03-02 15:52:45.000000000","message":"nice catch, it was a remaining trace of a previous patchset.","commit_id":"32184ea166c63936edbb9ab5ac4a511cefb4ad5f"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"a4250a65fb106afd1656318dc7c41aef0d7db7f8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"except ImportError:"},{"line_number":25,"context_line":"    import rtslib as rtslib_fb"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from ironic_lib import disk_utils"},{"line_number":28,"context_line":"from ironic_python_agent import errors"},{"line_number":29,"context_line":"from ironic_python_agent.extensions import base"},{"line_number":30,"context_line":"from ironic_python_agent import hardware"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa0719c6_5ff89149","line":27,"updated":"2016-03-22 12:46:07.000000000","message":"nit: this import should be grouped with the oslo ones\n\nPEP8:\n\n* standard library imports\n* related third party imports\n* local application/library specific imports","commit_id":"367bf0f2eeeb4e87b39e7e4f370796100e7baf2a"},{"author":{"_account_id":9268,"name":"Gonéri Le Bouder","email":"goneri@redhat.com","username":"goneri"},"change_message_id":"f058b64591df3a4cda3093537c9b1d77e71e96fd","unresolved":false,"context_lines":[{"line_number":24,"context_line":"except ImportError:"},{"line_number":25,"context_line":"    import rtslib as rtslib_fb"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from ironic_lib import disk_utils"},{"line_number":28,"context_line":"from ironic_python_agent import errors"},{"line_number":29,"context_line":"from ironic_python_agent.extensions import base"},{"line_number":30,"context_line":"from ironic_python_agent import hardware"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa0719c6_8af3059e","line":27,"in_reply_to":"fa0719c6_5ff89149","updated":"2016-03-22 12:56:40.000000000","message":"Done","commit_id":"367bf0f2eeeb4e87b39e7e4f370796100e7baf2a"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8fc3f97915f06e7fa91ebafadbe7b4a7680fba08","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class ISCSIExtension(base.BaseAgentExtension):"},{"line_number":139,"context_line":"    @base.sync_command(\u0027start_iscsi_target\u0027)"},{"line_number":140,"context_line":"    def start_iscsi_target(self, iqn\u003dNone, wipe_first\u003dFalse):"},{"line_number":141,"context_line":"        \"\"\"Expose the disk as an ISCSI target.\"\"\""},{"line_number":142,"context_line":"        # If iqn is not given, generate one"},{"line_number":143,"context_line":"        if iqn is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_6da4c8a5","line":140,"range":{"start_line":140,"start_character":43,"end_line":140,"end_character":53},"updated":"2016-03-22 14:00:42.000000000","message":"Nit: I\u0027m a strong believer that being explicit about and it seems like it should be wipe_disk_metadata","commit_id":"b38020f168d1a3bc83f040afe549993b85dfaf97"},{"author":{"_account_id":9268,"name":"Gonéri Le Bouder","email":"goneri@redhat.com","username":"goneri"},"change_message_id":"2f6487c9dc26e81c12beb211d64f76d8251337ab","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class ISCSIExtension(base.BaseAgentExtension):"},{"line_number":139,"context_line":"    @base.sync_command(\u0027start_iscsi_target\u0027)"},{"line_number":140,"context_line":"    def start_iscsi_target(self, iqn\u003dNone, wipe_first\u003dFalse):"},{"line_number":141,"context_line":"        \"\"\"Expose the disk as an ISCSI target.\"\"\""},{"line_number":142,"context_line":"        # If iqn is not given, generate one"},{"line_number":143,"context_line":"        if iqn is None:"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_84bacebe","line":140,"range":{"start_line":140,"start_character":43,"end_line":140,"end_character":53},"in_reply_to":"fa0719c6_6da4c8a5","updated":"2016-03-22 15:40:45.000000000","message":"Done","commit_id":"b38020f168d1a3bc83f040afe549993b85dfaf97"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"8fc3f97915f06e7fa91ebafadbe7b4a7680fba08","unresolved":false,"context_lines":[{"line_number":138,"context_line":"class ISCSIExtension(base.BaseAgentExtension):"},{"line_number":139,"context_line":"    @base.sync_command(\u0027start_iscsi_target\u0027)"},{"line_number":140,"context_line":"    def start_iscsi_target(self, iqn\u003dNone, wipe_first\u003dFalse):"},{"line_number":141,"context_line":"        \"\"\"Expose the disk as an ISCSI target.\"\"\""},{"line_number":142,"context_line":"        # If iqn is not given, generate one"},{"line_number":143,"context_line":"        if iqn is None:"},{"line_number":144,"context_line":"            iqn \u003d \u0027iqn.2008-10.org.openstack:%s\u0027 % uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_ed2bb8e9","line":141,"range":{"start_line":141,"start_character":11,"end_line":141,"end_character":17},"updated":"2016-03-22 14:00:42.000000000","message":"Nit: It might be good to update the doc string to be more verbose in a follow-up or any future revision.","commit_id":"b38020f168d1a3bc83f040afe549993b85dfaf97"},{"author":{"_account_id":9268,"name":"Gonéri Le Bouder","email":"goneri@redhat.com","username":"goneri"},"change_message_id":"2f6487c9dc26e81c12beb211d64f76d8251337ab","unresolved":false,"context_lines":[{"line_number":138,"context_line":"class ISCSIExtension(base.BaseAgentExtension):"},{"line_number":139,"context_line":"    @base.sync_command(\u0027start_iscsi_target\u0027)"},{"line_number":140,"context_line":"    def start_iscsi_target(self, iqn\u003dNone, wipe_first\u003dFalse):"},{"line_number":141,"context_line":"        \"\"\"Expose the disk as an ISCSI target.\"\"\""},{"line_number":142,"context_line":"        # If iqn is not given, generate one"},{"line_number":143,"context_line":"        if iqn is None:"},{"line_number":144,"context_line":"            iqn \u003d \u0027iqn.2008-10.org.openstack:%s\u0027 % uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa0719c6_e4b10ae3","line":141,"range":{"start_line":141,"start_character":11,"end_line":141,"end_character":17},"in_reply_to":"fa0719c6_ed2bb8e9","updated":"2016-03-22 15:40:45.000000000","message":"Done","commit_id":"b38020f168d1a3bc83f040afe549993b85dfaf97"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c89e18d9892fd54111be4bedf5a677c783c15a04","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        \"\"\"Expose the disk as an ISCSI target."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        :param wipe_disk_metadata: if the disk metadata should be wiped out"},{"line_number":144,"context_line":"        before before the disk is export."},{"line_number":145,"context_line":"        \"\"\""},{"line_number":146,"context_line":"        # If iqn is not given, generate one"},{"line_number":147,"context_line":"        if iqn is None:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa0719c6_7878fd2a","line":144,"range":{"start_line":144,"start_character":8,"end_line":144,"end_character":21},"updated":"2016-03-22 16:33:50.000000000","message":"duplicated","commit_id":"c8a88ae67c1dc9133d52ab3a9139ed60ee9e909c"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c89e18d9892fd54111be4bedf5a677c783c15a04","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        \"\"\"Expose the disk as an ISCSI target."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        :param wipe_disk_metadata: if the disk metadata should be wiped out"},{"line_number":144,"context_line":"        before before the disk is export."},{"line_number":145,"context_line":"        \"\"\""},{"line_number":146,"context_line":"        # If iqn is not given, generate one"},{"line_number":147,"context_line":"        if iqn is None:"}],"source_content_type":"text/x-python","patch_set":18,"id":"fa0719c6_38a5e5a1","line":144,"range":{"start_line":144,"start_character":34,"end_line":144,"end_character":40},"updated":"2016-03-22 16:33:50.000000000","message":"exposed over iSCSI","commit_id":"c8a88ae67c1dc9133d52ab3a9139ed60ee9e909c"}],"ironic_python_agent/tests/unit/extensions/test_iscsi.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5087a9f7200fd8535d2704c06eff876584c53fee","unresolved":false,"context_lines":[{"line_number":36,"context_line":"@mock.patch.object(utils, \u0027execute\u0027)"},{"line_number":37,"context_line":"@mock.patch.object(iscsi.rtslib_fb, \u0027RTSRoot\u0027,"},{"line_number":38,"context_line":"                   mock.Mock(side_effect\u003discsi.rtslib_fb.RTSLibError()))"},{"line_number":39,"context_line":"@mock.patch.object(processutils, \u0027execute\u0027,"},{"line_number":40,"context_line":"                   mock.Mock(return_value\u003d(0, 0)))"},{"line_number":41,"context_line":"class TestISCSIExtensionTgt(test_base.BaseTestCase):"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7af24918_ef360551","line":40,"range":{"start_line":39,"start_character":0,"end_line":40,"end_character":49},"updated":"2016-03-02 16:09:22.000000000","message":"utils.execute is already mocked 2 lines above. I suspect you wanted to mock destroy_disk_metadata - and see below how","commit_id":"16b9f0768d326f3b67d4e51f1236e8ab9264dfb5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5087a9f7200fd8535d2704c06eff876584c53fee","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        self.assertRaises(errors.ISCSIError,"},{"line_number":80,"context_line":"                          self.agent_extension.start_iscsi_target,"},{"line_number":81,"context_line":"                          iqn\u003dself.fake_iqn)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        expected \u003d [mock.call(\u0027tgtd\u0027),"},{"line_number":84,"context_line":"                    mock.call(\u0027tgtadm\u0027, \u0027--lld\u0027, \u0027iscsi\u0027, \u0027--mode\u0027, \u0027target\u0027,"},{"line_number":85,"context_line":"                              \u0027--op\u0027, \u0027show\u0027, attempts\u003d10)]"}],"source_content_type":"text/x-python","patch_set":7,"id":"7af24918_6f22f501","line":82,"updated":"2016-03-02 16:09:22.000000000","message":"nit: adding this line is not required","commit_id":"16b9f0768d326f3b67d4e51f1236e8ab9264dfb5"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5087a9f7200fd8535d2704c06eff876584c53fee","unresolved":false,"context_lines":[{"line_number":111,"context_line":"@mock.patch.object(hardware, \u0027dispatch_to_managers\u0027)"},{"line_number":112,"context_line":"# Don\u0027t mock the utils module, as it contains exceptions"},{"line_number":113,"context_line":"@mock.patch.object(iscsi, \u0027rtslib_fb\u0027, utils\u003d_ORIG_UTILS)"},{"line_number":114,"context_line":"@mock.patch.object(disk_utils, \u0027destroy_disk_metadata\u0027, mock.Mock())"},{"line_number":115,"context_line":"class TestISCSIExtensionLIO(test_base.BaseTestCase):"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    def setUp(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7af24918_2ffbcdc2","line":114,"range":{"start_line":114,"start_character":54,"end_line":114,"end_character":67},"updated":"2016-03-02 16:09:22.000000000","message":"by doing it you can\u0027t get the mock object to check. what you should do, is:\n\n @mock.patch.object(disk_utils, \u0027destroy_disk_metadata\u0027, autospec\u003dTrue)\n\nthen all the test methods will get one more argument (say, mock_destroy) which you will use to verify that it was called, e.g.:\n\n mock_destroy.assert_called_once_with(\u0027/dev/fake\u0027, \u0027my_node_uuid\u0027)","commit_id":"16b9f0768d326f3b67d4e51f1236e8ab9264dfb5"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"e774ba858ad8e9cbee4f15d7a777d190f6e9e18d","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def setUp(self):"},{"line_number":195,"context_line":"        super(TestISCSIExtensionCleanUp, self).setUp()"},{"line_number":196,"context_line":"        self.agent_extension \u003d iscsi.ISCSIExtension(None)"},{"line_number":197,"context_line":"        self.fake_dev \u003d \u0027/dev/fake\u0027"},{"line_number":198,"context_line":"        self.fake_iqn \u003d \u0027iqn-fake\u0027"},{"line_number":199,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa0719c6_651691a8","line":196,"updated":"2016-03-22 17:11:34.000000000","message":"Not sure why this change is needed. Doesn\u0027t hurt though.","commit_id":"668d3fb33047deacf15f4c86cdbe6a750b5ef290"}],"requirements.txt":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c0f7daa783163e3482260a861c6877eb5d87801b","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"pbr\u003e\u003d1.6 # Apache-2.0"},{"line_number":5,"context_line":"eventlet!\u003d0.18.3,\u003e\u003d0.18.2 # MIT"},{"line_number":6,"context_line":"ironic-lib # Apache-2.0"},{"line_number":7,"context_line":"iso8601\u003e\u003d0.1.9 # MIT"},{"line_number":8,"context_line":"netaddr!\u003d0.7.16,\u003e\u003d0.7.12 # BSD"},{"line_number":9,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"}],"source_content_type":"text/plain","patch_set":5,"id":"7af24918_357254e6","line":6,"updated":"2016-03-01 15:19:31.000000000","message":"ironic-lib\u003e\u003d0.5.0 # Apache-2.0\n\nThe requirement has to match the string in the global-requirements file (or Jenkins will fail)\n\nRef: https://github.com/openstack/requirements/blob/master/global-requirements.txt#L63","commit_id":"3c840300500aed2350c9b7bd8887087b4e84b97e"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6b483b133beedb304a0ecc109f56076b576798b2","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"pbr\u003e\u003d1.6 # Apache-2.0"},{"line_number":5,"context_line":"eventlet!\u003d0.18.3,\u003e\u003d0.18.2 # MIT"},{"line_number":6,"context_line":"ironic-lib\u003e\u003d0.5.0 # Apache-2.0"},{"line_number":7,"context_line":"iso8601\u003e\u003d0.1.9 # MIT"},{"line_number":8,"context_line":"netaddr!\u003d0.7.16,\u003e\u003d0.7.12 # BSD"},{"line_number":9,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"}],"source_content_type":"text/plain","patch_set":12,"id":"5aef4532_cec2cf84","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":30},"updated":"2016-03-10 05:48:09.000000000","message":"This has changed to \u0027ironic-lib\u003e\u003d1.1.0  # Apache-2.0\u0027\nhttps://github.com/openstack/requirements/blob/master/global-requirements.txt\n\nYou may not require any change in this file if this version satisfies this change.","commit_id":"75711a8d649bbd1bed835a97b5af4eed0f22355e"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"3e032b6eec314ff6407f278e6f7ce579b7a2b71d","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"pbr\u003e\u003d1.6 # Apache-2.0"},{"line_number":5,"context_line":"eventlet!\u003d0.18.3,\u003e\u003d0.18.2 # MIT"},{"line_number":6,"context_line":"ironic-lib\u003e\u003d1.1.0 # Apache-2.0"},{"line_number":7,"context_line":"iso8601\u003e\u003d0.1.9 # MIT"},{"line_number":8,"context_line":"netaddr!\u003d0.7.16,\u003e\u003d0.7.12 # BSD"},{"line_number":9,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"}],"source_content_type":"text/plain","patch_set":13,"id":"1af94dfe_c028d735","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":30},"updated":"2016-03-18 15:22:40.000000000","message":"just noting this was added already.\nhttps://github.com/openstack/ironic-python-agent/commit/944595a69d7268bdb89948fdd8f878750a2164f3","commit_id":"0498229880ce24f7aceab3063289ade117c73beb"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"3ad33598142264bdbd04cfaaaff379e515995aa4","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"pbr\u003e\u003d1.6 # Apache-2.0"},{"line_number":5,"context_line":"eventlet!\u003d0.18.3,\u003e\u003d0.18.2 # MIT"},{"line_number":6,"context_line":"ironic-lib\u003e\u003d0.5.0 # Apache-2.0"},{"line_number":7,"context_line":"iso8601\u003e\u003d0.1.9 # MIT"},{"line_number":8,"context_line":"netaddr!\u003d0.7.16,\u003e\u003d0.7.12 # BSD"},{"line_number":9,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"}],"source_content_type":"text/plain","patch_set":15,"id":"fa0719c6_b45f870d","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":30},"updated":"2016-03-21 13:12:09.000000000","message":"Duplicate requirement.","commit_id":"473ebbf84f5f320d09ad14e33d414b3806abf675"},{"author":{"_account_id":9268,"name":"Gonéri Le Bouder","email":"goneri@redhat.com","username":"goneri"},"change_message_id":"3f334e00fc31dbf49cb8d44ec14a2930ba94421f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"# process, which may cause wedges in the gate later."},{"line_number":4,"context_line":"pbr\u003e\u003d1.6 # Apache-2.0"},{"line_number":5,"context_line":"eventlet!\u003d0.18.3,\u003e\u003d0.18.2 # MIT"},{"line_number":6,"context_line":"ironic-lib\u003e\u003d0.5.0 # Apache-2.0"},{"line_number":7,"context_line":"iso8601\u003e\u003d0.1.9 # MIT"},{"line_number":8,"context_line":"netaddr!\u003d0.7.16,\u003e\u003d0.7.12 # BSD"},{"line_number":9,"context_line":"netifaces\u003e\u003d0.10.4 # MIT"}],"source_content_type":"text/plain","patch_set":15,"id":"fa0719c6_04136c67","line":6,"range":{"start_line":6,"start_character":0,"end_line":6,"end_character":30},"in_reply_to":"fa0719c6_b45f870d","updated":"2016-03-22 12:39:56.000000000","message":"Done","commit_id":"473ebbf84f5f320d09ad14e33d414b3806abf675"}]}
