)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35233,"name":"Adam Rozman","email":"adam.rozman@est.tech","username":"rozzix"},"change_message_id":"23b51f3cbd6a6aeb77760a5e6cc716aad7a9a7bf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"34a31a35_78300c35","updated":"2024-03-08 13:24:07.000000000","message":"WIP don\u0027t review please","commit_id":"f3ac8ae0553dafefb6a6f12f5f670b89719df2ca"},{"author":{"_account_id":35233,"name":"Adam Rozman","email":"adam.rozman@est.tech","username":"rozzix"},"change_message_id":"89f6b7360adcb97a604791fb7f034852e7a6e19a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"0c9bd949_e4ebaad0","updated":"2024-05-24 12:00:20.000000000","message":"Still WIP, a few tests are still missing","commit_id":"c6643a476701dbc041e197117aca9fa540854f50"}],"releasenotes/notes/add-novadriver-boot-volume-support-02292a16969869af.yaml":[{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"7b03d719099a7d021723fc33c81a1a56227fac27","unresolved":true,"context_lines":[{"line_number":8,"context_line":"    was used to create the first volume in the chain."},{"line_number":9,"context_line":"    To configure the depth to which the Nova driver will go to find the"},{"line_number":10,"context_line":"    root image, the user can utilize a new configuration variable called"},{"line_number":11,"context_line":"    ``SUSHY_MAX_VOLUME_DEPTH`` with the default value 15."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"308b1db6_bfe94719","line":11,"range":{"start_line":11,"start_character":54,"end_line":11,"end_character":56},"updated":"2024-06-06 14:01:25.000000000","message":"aside: Why 15, just out of curiosity!","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"}],"sushy_tools/emulator/resources/systems/novadriver.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from sushy_tools.emulator import memoize"},{"line_number":19,"context_line":"from sushy_tools.emulator.resources.systems.base import AbstractSystemsDriver"},{"line_number":20,"context_line":"from sushy_tools import error as errlib"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"try:"},{"line_number":23,"context_line":"    import openstack"}],"source_content_type":"text/x-python","patch_set":10,"id":"d716d992_85f30c4e","line":20,"updated":"2024-08-21 08:10:53.000000000","message":"nit: I\u0027d avoid a rename that is not consistent with other modules (see below)","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":105,"context_line":"            volume_image_metadata \u003d volume[\u0027volume_image_metadata\u0027]"},{"line_number":106,"context_line":"            image_id \u003d volume_image_metadata[\u0027image_id\u0027]"},{"line_number":107,"context_line":"            boot_image \u003d self._cc.get_image_by_id(image_id)"},{"line_number":108,"context_line":"        except Exception as error:"},{"line_number":109,"context_line":"            self._logger.debug(\"Error while checking boot image of a volume. \""},{"line_number":110,"context_line":"                               \"Volume: %(volume)s Error: %(error)s\" %"},{"line_number":111,"context_line":"                               {\u0027error\u0027: error, \u0027volume\u0027: volume})"}],"source_content_type":"text/x-python","patch_set":10,"id":"4285dcb0_13b999ae","line":108,"updated":"2024-08-21 08:10:53.000000000","message":"We tend to use \"err\" or \"exc\" as variable names for caught exceptions (avoids a conflict with \"error\").\n\nMore importantly, I suggest being more specific about which exceptions you\u0027re trying to catch. Is it about KeyError from all the dictionary accesses? Is it an OpenStackSDK exception? Are these normal or unexpected because ...","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        except Exception as error:"},{"line_number":109,"context_line":"            self._logger.debug(\"Error while checking boot image of a volume. \""},{"line_number":110,"context_line":"                               \"Volume: %(volume)s Error: %(error)s\" %"},{"line_number":111,"context_line":"                               {\u0027error\u0027: error, \u0027volume\u0027: volume})"},{"line_number":112,"context_line":"        return boot_image"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _get_source_volume_of_volume(self, volume):"}],"source_content_type":"text/x-python","patch_set":10,"id":"117e5e86_65f823f1","line":111,"updated":"2024-08-21 08:10:53.000000000","message":"... this message can be confusing if, for instance, a KeyError is expected on line 106. Furthermore, the error message of a KeyError is just the key itself, so you may end up with \"Error: image_id\" or something like that.","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        specified in the argument list."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"        :param volume: volume object under analysis"},{"line_number":125,"context_line":"        :returns: immediate source volume as a volume object"},{"line_number":126,"context_line":"        \"\"\""},{"line_number":127,"context_line":"        result_volume \u003d None"},{"line_number":128,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"22d39c6f_00aedd95","line":125,"updated":"2024-08-21 08:10:53.000000000","message":".. or None","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            source_volume_id \u003d volume[\u0027source_volume_id\u0027]"},{"line_number":130,"context_line":"            result_volume \u003d self._cc.get_volume_by_id(source_volume_id)"},{"line_number":131,"context_line":"        except Exception as err:"},{"line_number":132,"context_line":"            self._logger.debug(\"Error checking source volume of volume \""},{"line_number":133,"context_line":"                               \"ERROR: %(error)s\", {\u0027error\u0027: err})"},{"line_number":134,"context_line":"        return result_volume"}],"source_content_type":"text/x-python","patch_set":10,"id":"5ab289d2_11193fc0","line":131,"updated":"2024-08-21 08:10:53.000000000","message":"Same comment applies here.","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":142,"context_line":"        the disk image reference."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        :param volume: volume object under analysis"},{"line_number":145,"context_line":"        :param: source volume of the snapshot that was used to create the"},{"line_number":146,"context_line":"                volume under analysis"},{"line_number":147,"context_line":"        \"\"\""},{"line_number":148,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":10,"id":"ca9803b1_8a09cc7e","line":145,"updated":"2024-08-21 08:10:53.000000000","message":"You meant :returns:","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":143,"context_line":""},{"line_number":144,"context_line":"        :param volume: volume object under analysis"},{"line_number":145,"context_line":"        :param: source volume of the snapshot that was used to create the"},{"line_number":146,"context_line":"                volume under analysis"},{"line_number":147,"context_line":"        \"\"\""},{"line_number":148,"context_line":"        try:"},{"line_number":149,"context_line":"            snapshot_id \u003d volume[\u0027snapshot_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"c45f1c51_e5dfd4f9","line":146,"updated":"2024-08-21 08:10:53.000000000","message":"or None","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            volume_id \u003d snapshot[\u0027volume_id\u0027]"},{"line_number":152,"context_line":"            return_vol \u003d self._cc.get_volume_by_id(volume_id)"},{"line_number":153,"context_line":"            return return_vol"},{"line_number":154,"context_line":"        except Exception as error:"},{"line_number":155,"context_line":"            self._logger.debug(\"Retrieving snapshot of volume %(volume)s has \""},{"line_number":156,"context_line":"                               \"failed. Error: %(error)s\","},{"line_number":157,"context_line":"                               {\u0027error\u0027: error, \u0027volume\u0027: volume})"}],"source_content_type":"text/x-python","patch_set":10,"id":"4ad21959_b113a485","line":154,"updated":"2024-08-21 08:10:53.000000000","message":"And same here.","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":184,"context_line":"                source \u003d self._get_source_volume_by_snapshot(current)"},{"line_number":185,"context_line":"            # Unable to find either source volume or snapshot, chain breaks"},{"line_number":186,"context_line":"            if not source:"},{"line_number":187,"context_line":"                errmsg \u003d \"Unable to find the boot image in volume chain!\""},{"line_number":188,"context_line":"                raise errlib.NotFound(errmsg)"},{"line_number":189,"context_line":"            # Traversal step succeds source volume was found"},{"line_number":190,"context_line":"            # No boot image was found in current volume keep traversing"}],"source_content_type":"text/x-python","patch_set":10,"id":"9055fb0f_1960b77b","line":187,"updated":"2024-08-21 08:10:53.000000000","message":"nit: no exclamation marks in error messages","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            # Traversal step succeds source volume was found"},{"line_number":190,"context_line":"            # No boot image was found in current volume keep traversing"},{"line_number":191,"context_line":"            current \u003d source"},{"line_number":192,"context_line":"            source \u003d None"},{"line_number":193,"context_line":"        # Traversal completed but traversal depth was to shallow"},{"line_number":194,"context_line":"        return boot_image"},{"line_number":195,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"d5bd9023_a7f128b5","line":192,"updated":"2024-08-21 08:10:53.000000000","message":"nit: unnecessary assignment","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":36770,"name":"cid","display_name":"cid","email":"cid@gr-oss.io","username":"cidelight","status":"@gr-oss upstream: Doing good IRONIC things..."},"change_message_id":"475f0d2524da6a3b4cc6053dbc5ca935bf7a07ac","unresolved":true,"context_lines":[{"line_number":190,"context_line":"            # No boot image was found in current volume keep traversing"},{"line_number":191,"context_line":"            current \u003d source"},{"line_number":192,"context_line":"            source \u003d None"},{"line_number":193,"context_line":"        # Traversal completed but traversal depth was to shallow"},{"line_number":194,"context_line":"        return boot_image"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _get_vol_hw_firmware_type(self, volume):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7c3de684_64e9ad52","line":193,"range":{"start_line":193,"start_character":54,"end_line":193,"end_character":57},"updated":"2024-06-06 14:03:49.000000000","message":"niit: \"too\" ?","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":202,"context_line":""},{"line_number":203,"context_line":"        :param volume: volume object under analysis"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        :returns: hw_frimware_type of underlying image"},{"line_number":206,"context_line":"        \"\"\""},{"line_number":207,"context_line":"        hw_fmw_type \u003d None"},{"line_number":208,"context_line":"        boot_image \u003d self._get_vol_boot_image(volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"df0bef0a_9844bcc4","line":205,"updated":"2024-08-21 08:10:53.000000000","message":"Let\u0027s use a human-friendly description rather than a variable name","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        try:"},{"line_number":210,"context_line":"            image_properties \u003d boot_image[\u0027properties\u0027]"},{"line_number":211,"context_line":"            hw_fmw_type \u003d image_properties[\u0027hw_firmware_type\u0027]"},{"line_number":212,"context_line":"        except Exception as error:"},{"line_number":213,"context_line":"            self._logger.debug(\"Determining hw_firmware_type of image has \""},{"line_number":214,"context_line":"                               \"failed. Volume: %(volume)s Error: %(error)s\","},{"line_number":215,"context_line":"                               {\u0027error\u0027: error, \u0027volume\u0027: volume})"}],"source_content_type":"text/x-python","patch_set":10,"id":"317be590_bacd19aa","line":212,"updated":"2024-08-21 08:10:53.000000000","message":"Same about error handling (only KeyError possible in this case?)","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"        :param volume: volume object under analysis"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        :returns: hw_frimware_type of underlying image"},{"line_number":228,"context_line":"        \"\"\""},{"line_number":229,"context_line":"        os_sec_boot \u003d None"},{"line_number":230,"context_line":"        boot_image \u003d self._get_vol_boot_image(volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a2c4f56_6d2477b4","line":227,"updated":"2024-08-21 08:10:53.000000000","message":"Wrong returns","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        try:"},{"line_number":232,"context_line":"            image_properties \u003d boot_image[\u0027properties\u0027]"},{"line_number":233,"context_line":"            os_sec_boot \u003d image_properties[\u0027needs_secure_boot\u0027]"},{"line_number":234,"context_line":"        except Exception as error:"},{"line_number":235,"context_line":"            self._logger.debug(\"Determining secure boot compatibility has \""},{"line_number":236,"context_line":"                               \"failed. Volume: %(volume)s Error: %(error)s\","},{"line_number":237,"context_line":"                               {\u0027error\u0027: error, \u0027volume\u0027: volume})"}],"source_content_type":"text/x-python","patch_set":10,"id":"b0e92d26_ef4d3c2b","line":234,"updated":"2024-08-21 08:10:53.000000000","message":"Same about error handling","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":261,"context_line":"                    self._logger.debug(\"Attached volume id %(id)s is not \""},{"line_number":262,"context_line":"                                       \"accessible! Error: %(error)s\","},{"line_number":263,"context_line":"                                       {\u0027error\u0027: error, \u0027id\u0027: volume_id})"},{"line_number":264,"context_line":"        except Exception as error:"},{"line_number":265,"context_line":"            self._logger.debug(\"List of attached volumes is not available\""},{"line_number":266,"context_line":"                               \"for %(instance)s Error: %(error)s\","},{"line_number":267,"context_line":"                               {\u0027error\u0027: error, \u0027instance\u0027: instance})"}],"source_content_type":"text/x-python","patch_set":10,"id":"f1ad8940_bd1c7179","line":264,"updated":"2024-08-21 08:10:53.000000000","message":"This is for line 252 only right? Let\u0027s limit the try..block to that line and provide a more precise error message (KeyErrors are notoriously bad at that)","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            # In case of multiple bootable volumes boot order can\u0027t be"},{"line_number":272,"context_line":"            # determined"},{"line_number":273,"context_line":"            errmsg \u003d \"More than 1 bootable volume attached. Volumes: \""},{"line_number":274,"context_line":"            raise errlib.FishyError(errmsg + str(volume_records))"},{"line_number":275,"context_line":"        if num_boot_volume \u003c 1:"},{"line_number":276,"context_line":"            errmsg \u003d \"There is no bootable volume attached to the instance! \""},{"line_number":277,"context_line":"            \"Volumes: \""}],"source_content_type":"text/x-python","patch_set":10,"id":"cb76bbf6_caf90f80","line":274,"updated":"2024-08-21 08:10:53.000000000","message":"nit: maybe only report ID\u0027s instead of complete records?","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":274,"context_line":"            raise errlib.FishyError(errmsg + str(volume_records))"},{"line_number":275,"context_line":"        if num_boot_volume \u003c 1:"},{"line_number":276,"context_line":"            errmsg \u003d \"There is no bootable volume attached to the instance! \""},{"line_number":277,"context_line":"            \"Volumes: \""},{"line_number":278,"context_line":"            raise errlib.NotFound(errmsg + str(volume_records))"},{"line_number":279,"context_line":"        return boot_volume"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"054baaf5_0e4573c1","line":277,"updated":"2024-08-21 08:10:53.000000000","message":"This is not concatenated with errmsg, it\u0027s just a no-op instruction that creates a string. You need to use brackets.","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        if num_boot_volume \u003c 1:"},{"line_number":276,"context_line":"            errmsg \u003d \"There is no bootable volume attached to the instance! \""},{"line_number":277,"context_line":"            \"Volumes: \""},{"line_number":278,"context_line":"            raise errlib.NotFound(errmsg + str(volume_records))"},{"line_number":279,"context_line":"        return boot_volume"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    def _get_instance_secure_boot_by_id(self, identity):"}],"source_content_type":"text/x-python","patch_set":10,"id":"9d1fab36_55e66f48","line":278,"updated":"2024-08-21 08:10:53.000000000","message":"Same re ID\u0027s vs records","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":288,"context_line":"           volume."},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"           :param identity: id of the VM"},{"line_number":291,"context_line":"           :return: relevant os_secure_boot propety value (str or None)"},{"line_number":292,"context_line":"        \"\"\""},{"line_number":293,"context_line":"        instance \u003d self._get_instance(identity)"},{"line_number":294,"context_line":"        secure_boot \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"43eaeb39_fac75eb2","line":291,"updated":"2024-08-21 08:10:53.000000000","message":"nit: property","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":301,"context_line":"            return secure_boot"},{"line_number":302,"context_line":"        except Exception as error:"},{"line_number":303,"context_line":"            emsg \u003d str(error)"},{"line_number":304,"context_line":"            self._logger.debug(emsg)"},{"line_number":305,"context_line":"        # If the instance was not directly booted from image or there are"},{"line_number":306,"context_line":"        # issues with the image reference then check whether the machine was"},{"line_number":307,"context_line":"        # booted from volume and traverse the volume chain if needed"}],"source_content_type":"text/x-python","patch_set":10,"id":"6701c7fd_5bc44bfa","line":304,"updated":"2024-08-21 08:10:53.000000000","message":"Let\u0027s provide some context here (also see above re errors)","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":321,"context_line":"           volume."},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"           :param identity: id of the VM"},{"line_number":324,"context_line":"           :return: relevant os_secure_boot propety value (str or None)"},{"line_number":325,"context_line":"        \"\"\""},{"line_number":326,"context_line":"        instance \u003d self._get_instance(identity)"},{"line_number":327,"context_line":"        boot_mode \u003d None"}],"source_content_type":"text/x-python","patch_set":10,"id":"bcb8fc8d_cd7f45f1","line":324,"updated":"2024-08-21 08:10:53.000000000","message":"The way the function is written, it cannot return None","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            return boot_mode"},{"line_number":337,"context_line":"        except Exception as err:"},{"line_number":338,"context_line":"            emsg \u003d \"Error while checking image attached to VM: \" + str(err)"},{"line_number":339,"context_line":"            self._logger.debug(emsg)"},{"line_number":340,"context_line":"        # If the instance was not directly booted from image or there are"},{"line_number":341,"context_line":"        # issues with the image reference then check whether the machine was"},{"line_number":342,"context_line":"        # booted from volume and traverse the volume chain if needed"}],"source_content_type":"text/x-python","patch_set":10,"id":"3c540516_9e826816","line":339,"updated":"2024-08-21 08:10:53.000000000","message":"The pattern with logging is usually to provide a formatting string first, then the arguments. Like this\n\n self._logger.debug(\"Error while blah-blah: %s\", err)","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        # issues with the image reference then check whether the machine was"},{"line_number":342,"context_line":"        # booted from volume and traverse the volume chain if needed"},{"line_number":343,"context_line":"        boot_volume \u003d self._get_instance_bootable_volume(instance)"},{"line_number":344,"context_line":"        errmsg \u003d \"Boot mode was not found!\""},{"line_number":345,"context_line":"        if not boot_volume:"},{"line_number":346,"context_line":"            raise errlib.NotFound(errmsg)"},{"line_number":347,"context_line":"        boot_mode \u003d self._get_vol_hw_firmware_type(boot_volume)"}],"source_content_type":"text/x-python","patch_set":10,"id":"34a04859_57ffc5ac","line":344,"updated":"2024-08-21 08:10:53.000000000","message":"You meant \"Boot volume\"?","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":547,"context_line":"            errmsg \u003d \"Secure boot support can\u0027t be determined!\""},{"line_number":548,"context_line":"            raise errlib.NotFound(errmsg)"},{"line_number":549,"context_line":"        elif sec_boot_supported \u003d\u003d \u0027required\u0027:"},{"line_number":550,"context_line":"            self._logger.debug(\"Sec boot mode:\" + str(sec_boot_supported))"},{"line_number":551,"context_line":"            return True"},{"line_number":552,"context_line":"        self._logger.debug(\"Sec boot mode:\" + str(sec_boot_supported))"},{"line_number":553,"context_line":"        return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"1911cda0_b1f93bbf","line":550,"updated":"2024-08-21 08:10:53.000000000","message":"nit: seems unnecessary to me? If you want to keep, you need more context (system ID, etc)","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b4753e949e2f5240fca12f4da9ef951366abca26","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        elif sec_boot_supported \u003d\u003d \u0027required\u0027:"},{"line_number":550,"context_line":"            self._logger.debug(\"Sec boot mode:\" + str(sec_boot_supported))"},{"line_number":551,"context_line":"            return True"},{"line_number":552,"context_line":"        self._logger.debug(\"Sec boot mode:\" + str(sec_boot_supported))"},{"line_number":553,"context_line":"        return False"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"    def set_secure_boot(self, identity, secure):"}],"source_content_type":"text/x-python","patch_set":10,"id":"8b877b2c_1b359463","line":552,"updated":"2024-08-21 08:10:53.000000000","message":"same","commit_id":"f16ed38fe87eef967983b92e77aab55a5565785c"}]}
