)]}'
{"devstack/lib/ironic":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4bc489a548bcca8614ed1f9104efa6ae71572982","unresolved":false,"context_lines":[{"line_number":92,"context_line":"IRONIC_CALLBACK_TIMEOUT\u003d${IRONIC_CALLBACK_TIMEOUT:-}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# Timeout before retrying PXE boot. Set low to help the CI."},{"line_number":95,"context_line":"IRONIC_PXE_BOOT_RETRY_TIMEOUT\u003d${IRONIC_PXE_BOOT_RETRY_TIMEOUT:-600}"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"# Ping timeout after the node becomes active"},{"line_number":98,"context_line":"IRONIC_PING_TIMEOUT\u003d${IRONIC_PING_TIMEOUT:-}"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"3fa7e38b_52280c33","line":95,"updated":"2019-09-19 17:04:30.000000000","message":"We will need to be careful with this Because in CI under heavy load this can always take a little longer, but since we don\u0027t run coreos anymore for CI, it should be fine.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"492cf06d2363a894ae66ad4915c41afe7714ba47","unresolved":false,"context_lines":[{"line_number":92,"context_line":"IRONIC_CALLBACK_TIMEOUT\u003d${IRONIC_CALLBACK_TIMEOUT:-}"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"# Timeout before retrying PXE boot. Set low to help the CI."},{"line_number":95,"context_line":"IRONIC_PXE_BOOT_RETRY_TIMEOUT\u003d${IRONIC_PXE_BOOT_RETRY_TIMEOUT:-600}"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"# Ping timeout after the node becomes active"},{"line_number":98,"context_line":"IRONIC_PING_TIMEOUT\u003d${IRONIC_PING_TIMEOUT:-}"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"3fa7e38b_84cab417","line":95,"in_reply_to":"3fa7e38b_52280c33","updated":"2019-09-20 10:39:37.000000000","message":"yep, 10 minutes should be fine for virtual machines. if even getting to IPA takes more, the run is probably doomed anyway.\n\n3rd party CI.. well, probably we need to make it conditional on IRONIC_IS_HARDWARE.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"18d3f0bd02f7a575c6aa3b3c58be6d18cd2bb20c","unresolved":false,"context_lines":[{"line_number":102,"context_line":"IRONIC_PING_TIMEOUT\u003d${IRONIC_PING_TIMEOUT:-}"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"# Whether DevStack will be setup for bare metal or VMs"},{"line_number":105,"context_line":"IRONIC_IS_HARDWARE\u003d$(trueorfalse False IRONIC_IS_HARDWARE)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# Deploy to hardware platform"},{"line_number":108,"context_line":"IRONIC_HW_NODE_CPU\u003d${IRONIC_HW_NODE_CPU:-1}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"3fa7e38b_2dede38a","line":105,"updated":"2019-09-20 13:13:53.000000000","message":"Don\u0027t we want this to be done before L94?","commit_id":"8c6eb29dfe68bc7a85d11c8cfd771fb462c21add"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"141d9ea079efda73a55b806339ea6de62398371d","unresolved":false,"context_lines":[{"line_number":102,"context_line":"IRONIC_PING_TIMEOUT\u003d${IRONIC_PING_TIMEOUT:-}"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"# Whether DevStack will be setup for bare metal or VMs"},{"line_number":105,"context_line":"IRONIC_IS_HARDWARE\u003d$(trueorfalse False IRONIC_IS_HARDWARE)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"# Deploy to hardware platform"},{"line_number":108,"context_line":"IRONIC_HW_NODE_CPU\u003d${IRONIC_HW_NODE_CPU:-1}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"3fa7e38b_38b51fce","line":105,"in_reply_to":"3fa7e38b_2dede38a","updated":"2019-09-20 13:21:24.000000000","message":"oh, I thought I moved it far enough","commit_id":"8c6eb29dfe68bc7a85d11c8cfd771fb462c21add"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7fe0018cc94f9cd8e02d8712304d7be04eaae939","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"# Timeout before retrying PXE boot. Set low to help the CI."},{"line_number":98,"context_line":"if [[ \"$IRONIC_IS_HARDWARE\" \u003d\u003d False ]]; then"},{"line_number":99,"context_line":"    IRONIC_PXE_BOOT_RETRY_TIMEOUT\u003d${IRONIC_PXE_BOOT_RETRY_TIMEOUT:-600}"},{"line_number":100,"context_line":"else"},{"line_number":101,"context_line":"    IRONIC_PXE_BOOT_RETRY_TIMEOUT\u003d${IRONIC_PXE_BOOT_RETRY_TIMEOUT:-}"},{"line_number":102,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"3fa7e38b_fa73eaaf","line":99,"range":{"start_line":99,"start_character":67,"end_line":99,"end_character":70},"updated":"2019-09-21 14:28:48.000000000","message":"Shouldn\u0027t this maybe a little lower?","commit_id":"b2834e66619c5f968389fa6ab1cf3e5f99cbafa3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"efd670c5a6b34551484393c233029da3f30560fa","unresolved":false,"context_lines":[{"line_number":96,"context_line":""},{"line_number":97,"context_line":"# Timeout before retrying PXE boot. Set low to help the CI."},{"line_number":98,"context_line":"if [[ \"$IRONIC_IS_HARDWARE\" \u003d\u003d False ]]; then"},{"line_number":99,"context_line":"    IRONIC_PXE_BOOT_RETRY_TIMEOUT\u003d${IRONIC_PXE_BOOT_RETRY_TIMEOUT:-600}"},{"line_number":100,"context_line":"else"},{"line_number":101,"context_line":"    IRONIC_PXE_BOOT_RETRY_TIMEOUT\u003d${IRONIC_PXE_BOOT_RETRY_TIMEOUT:-}"},{"line_number":102,"context_line":"fi"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"3fa7e38b_e8a23d4b","line":99,"range":{"start_line":99,"start_character":67,"end_line":99,"end_character":70},"in_reply_to":"3fa7e38b_fa73eaaf","updated":"2019-09-23 09:12:44.000000000","message":"With 30 seconds deploy timeout it gives us 2 retries.","commit_id":"b2834e66619c5f968389fa6ab1cf3e5f99cbafa3"}],"ironic/conductor/utils.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"642b7d6556b18ea09554f7bfaa05738f9b289adc","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        node[\u0027target_power_state\u0027] \u003d target_state"},{"line_number":274,"context_line":"        node[\u0027last_error\u0027] \u003d None"},{"line_number":275,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":276,"context_line":"        driver_internal_info[\u0027last_power_state_change\u0027] \u003d str("},{"line_number":277,"context_line":"            timeutils.utcnow().isoformat())"},{"line_number":278,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":279,"context_line":"        node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_0f41113a","line":276,"updated":"2019-09-19 14:07:17.000000000","message":"this is the time when a power-state-change is started, right? (regardless of whether it succeeds or not).","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"959fd6c71e795c198f445e2cbdc38c791d305514","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        node[\u0027target_power_state\u0027] \u003d target_state"},{"line_number":274,"context_line":"        node[\u0027last_error\u0027] \u003d None"},{"line_number":275,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":276,"context_line":"        driver_internal_info[\u0027last_power_state_change\u0027] \u003d str("},{"line_number":277,"context_line":"            timeutils.utcnow().isoformat())"},{"line_number":278,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":279,"context_line":"        node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_e0da8215","line":276,"in_reply_to":"3fa7e38b_0f41113a","updated":"2019-09-19 15:37:23.000000000","message":"Yep, at least attempted.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"4a6fe6c2984d4918596c4f2051f247878faf004a","unresolved":false,"context_lines":[{"line_number":273,"context_line":"        node[\u0027target_power_state\u0027] \u003d target_state"},{"line_number":274,"context_line":"        node[\u0027last_error\u0027] \u003d None"},{"line_number":275,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":276,"context_line":"        driver_internal_info[\u0027last_power_state_change\u0027] \u003d str("},{"line_number":277,"context_line":"            timeutils.utcnow().isoformat())"},{"line_number":278,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":279,"context_line":"        node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_dbfdf73a","line":276,"in_reply_to":"3fa7e38b_e0da8215","updated":"2019-09-19 16:30:44.000000000","message":"ok. i haven\u0027t thought through the use cases. Just wondering if that value gets \u0027stale\u0027 (from some previous thing), which would cause the retry to be triggered. But probably not. Guess it could also be useful for other (debugging) reasons...","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4bc489a548bcca8614ed1f9104efa6ae71572982","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        node[\u0027last_error\u0027] \u003d None"},{"line_number":275,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":276,"context_line":"        driver_internal_info[\u0027last_power_state_change\u0027] \u003d str("},{"line_number":277,"context_line":"            timeutils.utcnow().isoformat())"},{"line_number":278,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":279,"context_line":"        node.save()"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1274d467","line":277,"updated":"2019-09-19 17:04:30.000000000","message":"Fun!","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"492cf06d2363a894ae66ad4915c41afe7714ba47","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        node[\u0027last_error\u0027] \u003d None"},{"line_number":275,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":276,"context_line":"        driver_internal_info[\u0027last_power_state_change\u0027] \u003d str("},{"line_number":277,"context_line":"            timeutils.utcnow().isoformat())"},{"line_number":278,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":279,"context_line":"        node.save()"},{"line_number":280,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_249f4004","line":277,"in_reply_to":"3fa7e38b_1274d467","updated":"2019-09-20 10:39:37.000000000","message":"Cargo-culted from the agent code :)","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"642b7d6556b18ea09554f7bfaa05738f9b289adc","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                LOG.warning(\"Volume detachment for node %(node)s \""},{"line_number":331,"context_line":"                            \"failed. Error: %(error)s\","},{"line_number":332,"context_line":"                            {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"@task_manager.require_exclusive_lock"},{"line_number":336,"context_line":"def cleanup_after_timeout(task):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_922be4e9","line":333,"updated":"2019-09-19 14:07:17.000000000","message":"we set last_power_state_change, but we don\u0027t seem to unset it. Is that as designed/OK?","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"959fd6c71e795c198f445e2cbdc38c791d305514","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                LOG.warning(\"Volume detachment for node %(node)s \""},{"line_number":331,"context_line":"                            \"failed. Error: %(error)s\","},{"line_number":332,"context_line":"                            {\u0027node\u0027: node.uuid, \u0027error\u0027: e})"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"@task_manager.require_exclusive_lock"},{"line_number":336,"context_line":"def cleanup_after_timeout(task):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_00d6bef2","line":333,"in_reply_to":"3fa7e38b_922be4e9","updated":"2019-09-19 15:37:23.000000000","message":"Yes (similar to how we never unset agent_url and company)","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"642b7d6556b18ea09554f7bfaa05738f9b289adc","unresolved":false,"context_lines":[{"line_number":871,"context_line":""},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"def value_within_timeout(value, timeout):"},{"line_number":874,"context_line":"    \"\"\"Check if the value is within the timeout (in seconds).\"\"\""},{"line_number":875,"context_line":"    # use native datetime objects for conversion and compare"},{"line_number":876,"context_line":"    # slightly odd because py2 compatability :("},{"line_number":877,"context_line":"    last \u003d datetime.datetime.strptime(value or \u00271970-01-01T00:00:00.000000\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_72e0a8fb","line":874,"updated":"2019-09-19 14:07:17.000000000","message":"value is a date/time, and it is checking if it is within some time period up to now?","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"959fd6c71e795c198f445e2cbdc38c791d305514","unresolved":false,"context_lines":[{"line_number":871,"context_line":""},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"def value_within_timeout(value, timeout):"},{"line_number":874,"context_line":"    \"\"\"Check if the value is within the timeout (in seconds).\"\"\""},{"line_number":875,"context_line":"    # use native datetime objects for conversion and compare"},{"line_number":876,"context_line":"    # slightly odd because py2 compatability :("},{"line_number":877,"context_line":"    last \u003d datetime.datetime.strptime(value or \u00271970-01-01T00:00:00.000000\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_80038e73","line":874,"in_reply_to":"3fa7e38b_72e0a8fb","updated":"2019-09-19 15:37:23.000000000","message":"Yep. Suggestions for a better wording are welcome :)","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"492cf06d2363a894ae66ad4915c41afe7714ba47","unresolved":false,"context_lines":[{"line_number":871,"context_line":""},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"def value_within_timeout(value, timeout):"},{"line_number":874,"context_line":"    \"\"\"Check if the value is within the timeout (in seconds).\"\"\""},{"line_number":875,"context_line":"    # use native datetime objects for conversion and compare"},{"line_number":876,"context_line":"    # slightly odd because py2 compatability :("},{"line_number":877,"context_line":"    last \u003d datetime.datetime.strptime(value or \u00271970-01-01T00:00:00.000000\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_87a4f6ba","line":874,"in_reply_to":"3fa7e38b_7bd403be","updated":"2019-09-20 10:39:37.000000000","message":"Done","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b9b0d1a2bed13b07a3b78f9f4446c1b61d618ced","unresolved":false,"context_lines":[{"line_number":871,"context_line":""},{"line_number":872,"context_line":""},{"line_number":873,"context_line":"def value_within_timeout(value, timeout):"},{"line_number":874,"context_line":"    \"\"\"Check if the value is within the timeout (in seconds).\"\"\""},{"line_number":875,"context_line":"    # use native datetime objects for conversion and compare"},{"line_number":876,"context_line":"    # slightly odd because py2 compatability :("},{"line_number":877,"context_line":"    last \u003d datetime.datetime.strptime(value or \u00271970-01-01T00:00:00.000000\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7bd403be","line":874,"in_reply_to":"3fa7e38b_80038e73","updated":"2019-09-19 16:26:42.000000000","message":"How about:\n\nChecks if the time is within the previous timeout seconds from now.\n\nvalue: a string that represents a date/time. or None.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"}],"ironic/db/sqlalchemy/api.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"18d3f0bd02f7a575c6aa3b3c58be6d18cd2bb20c","unresolved":false,"context_lines":[{"line_number":286,"context_line":"                             for field in (\u0027uuid\u0027, \u0027provision_state\u0027)}"},{"line_number":287,"context_line":"    _NODE_NON_NULL_FILTERS \u003d {\u0027associated\u0027: \u0027instance_uuid\u0027,"},{"line_number":288,"context_line":"                              \u0027reserved\u0027: \u0027reservation\u0027,"},{"line_number":289,"context_line":"                              \u0027with_power_state\u0027: \u0027power_state\u0027}"},{"line_number":290,"context_line":"    _NODE_FILTERS \u003d ({\u0027chassis_uuid\u0027, \u0027reserved_by_any_of\u0027,"},{"line_number":291,"context_line":"                      \u0027provisioned_before\u0027, \u0027inspection_started_before\u0027,"},{"line_number":292,"context_line":"                      \u0027description_contains\u0027}"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_7850770b","line":289,"updated":"2019-09-20 13:13:53.000000000","message":"nice!","commit_id":"8c6eb29dfe68bc7a85d11c8cfd771fb462c21add"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"18d3f0bd02f7a575c6aa3b3c58be6d18cd2bb20c","unresolved":false,"context_lines":[{"line_number":331,"context_line":"            query \u003d query.filter_by(chassis_id\u003dchassis_obj.id)"},{"line_number":332,"context_line":"        if \u0027reserved_by_any_of\u0027 in filters:"},{"line_number":333,"context_line":"            query \u003d query.filter(models.Node.reservation.in_("},{"line_number":334,"context_line":"                filters[\u0027reserved_by_any_of\u0027]))"},{"line_number":335,"context_line":"        if \u0027provisioned_before\u0027 in filters:"},{"line_number":336,"context_line":"            limit \u003d (timeutils.utcnow()"},{"line_number":337,"context_line":"                     - datetime.timedelta("}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_58281b85","line":334,"updated":"2019-09-20 13:13:53.000000000","message":"could add _NODE_IN_QUERY_FIELDS[\u0027reserved_by_and_of\u0027]\u003d \u0027reservation\u0027 above, then wouldn\u0027t need this. (in followup)","commit_id":"8c6eb29dfe68bc7a85d11c8cfd771fb462c21add"}],"ironic/drivers/modules/pxe_base.py":[{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4bc489a548bcca8614ed1f9104efa6ae71572982","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \"\"\""},{"line_number":112,"context_line":"        pxe_utils.parse_driver_info(task.node, mode\u003d\u0027rescue\u0027)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _persistent_ramdisk_boot(self, node):"},{"line_number":115,"context_line":"        value \u003d node.driver_info.get(\u0027force_persistent_boot_device\u0027, \u0027Default\u0027)"},{"line_number":116,"context_line":"        if value in {\u0027Always\u0027, \u0027Default\u0027, \u0027Never\u0027}:"},{"line_number":117,"context_line":"            return value \u003d\u003d \u0027Always\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_06d6d6f2","line":114,"updated":"2019-09-19 17:04:30.000000000","message":"Super nit: would be good to at least add a doc-string, but that can be done later, post release or even never. :)","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"492cf06d2363a894ae66ad4915c41afe7714ba47","unresolved":false,"context_lines":[{"line_number":111,"context_line":"        \"\"\""},{"line_number":112,"context_line":"        pxe_utils.parse_driver_info(task.node, mode\u003d\u0027rescue\u0027)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    def _persistent_ramdisk_boot(self, node):"},{"line_number":115,"context_line":"        value \u003d node.driver_info.get(\u0027force_persistent_boot_device\u0027, \u0027Default\u0027)"},{"line_number":116,"context_line":"        if value in {\u0027Always\u0027, \u0027Default\u0027, \u0027Never\u0027}:"},{"line_number":117,"context_line":"            return value \u003d\u003d \u0027Always\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_27abc289","line":114,"in_reply_to":"3fa7e38b_06d6d6f2","updated":"2019-09-20 10:39:37.000000000","message":"Done","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"642b7d6556b18ea09554f7bfaa05738f9b289adc","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _persistent_ramdisk_boot(self, node):"},{"line_number":115,"context_line":"        value \u003d node.driver_info.get(\u0027force_persistent_boot_device\u0027, \u0027Default\u0027)"},{"line_number":116,"context_line":"        if value in {\u0027Always\u0027, \u0027Default\u0027, \u0027Never\u0027}:"},{"line_number":117,"context_line":"            return value \u003d\u003d \u0027Always\u0027"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return strutils.bool_from_string(value, False)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_8f4c219f","line":117,"updated":"2019-09-19 14:07:17.000000000","message":"did you mean to change the logic when you moved this from pxe.py? Because it isn\u0027t the same.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"959fd6c71e795c198f445e2cbdc38c791d305514","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _persistent_ramdisk_boot(self, node):"},{"line_number":115,"context_line":"        value \u003d node.driver_info.get(\u0027force_persistent_boot_device\u0027, \u0027Default\u0027)"},{"line_number":116,"context_line":"        if value in {\u0027Always\u0027, \u0027Default\u0027, \u0027Never\u0027}:"},{"line_number":117,"context_line":"            return value \u003d\u003d \u0027Always\u0027"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return strutils.bool_from_string(value, False)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_a0148aa1","line":117,"in_reply_to":"3fa7e38b_8f4c219f","updated":"2019-09-19 15:37:23.000000000","message":"Isn\u0027t it? The old code defaults to False and sets it to True if value \u003d\u003d \u0027Always\u0027. Am I missing something?","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"f6ea5ff6cee6b4b387fb62ca7c3e7ced05e27a94","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def _persistent_ramdisk_boot(self, node):"},{"line_number":115,"context_line":"        value \u003d node.driver_info.get(\u0027force_persistent_boot_device\u0027, \u0027Default\u0027)"},{"line_number":116,"context_line":"        if value in {\u0027Always\u0027, \u0027Default\u0027, \u0027Never\u0027}:"},{"line_number":117,"context_line":"            return value \u003d\u003d \u0027Always\u0027"},{"line_number":118,"context_line":"        else:"},{"line_number":119,"context_line":"            return strutils.bool_from_string(value, False)"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_7b1163ac","line":117,"in_reply_to":"3fa7e38b_a0148aa1","updated":"2019-09-19 16:22:28.000000000","message":"Oh, sorry. I misread this, I was just comparing it to the original code and I see you modified the way it was done. This is correct.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"642b7d6556b18ea09554f7bfaa05738f9b289adc","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        # NOTE(dtantsur): this assumes IPA, do we need to make it generic?"},{"line_number":153,"context_line":"        for field in (\u0027agent_last_heartbeat\u0027, \u0027last_power_state_change\u0027):"},{"line_number":154,"context_line":"            if manager_utils.value_within_timeout("},{"line_number":155,"context_line":"                    task.node.driver_internal_info.get(field),"},{"line_number":156,"context_line":"                    CONF.pxe.boot_retry_timeout):"},{"line_number":157,"context_line":"                # Alive and heartbeating, probably busy with something long"},{"line_number":158,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_b292a04a","line":155,"updated":"2019-09-19 14:07:17.000000000","message":"if that field isn\u0027t there, this will be None, right? Which will barf, i think .value_within_timeout() assumes that it is a string.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b9b0d1a2bed13b07a3b78f9f4446c1b61d618ced","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        # NOTE(dtantsur): this assumes IPA, do we need to make it generic?"},{"line_number":153,"context_line":"        for field in (\u0027agent_last_heartbeat\u0027, \u0027last_power_state_change\u0027):"},{"line_number":154,"context_line":"            if manager_utils.value_within_timeout("},{"line_number":155,"context_line":"                    task.node.driver_internal_info.get(field),"},{"line_number":156,"context_line":"                    CONF.pxe.boot_retry_timeout):"},{"line_number":157,"context_line":"                # Alive and heartbeating, probably busy with something long"},{"line_number":158,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_1b562f5e","line":155,"in_reply_to":"3fa7e38b_80114eaf","updated":"2019-09-19 16:26:42.000000000","message":"Yup, sorry, I misread that.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"959fd6c71e795c198f445e2cbdc38c791d305514","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        # NOTE(dtantsur): this assumes IPA, do we need to make it generic?"},{"line_number":153,"context_line":"        for field in (\u0027agent_last_heartbeat\u0027, \u0027last_power_state_change\u0027):"},{"line_number":154,"context_line":"            if manager_utils.value_within_timeout("},{"line_number":155,"context_line":"                    task.node.driver_internal_info.get(field),"},{"line_number":156,"context_line":"                    CONF.pxe.boot_retry_timeout):"},{"line_number":157,"context_line":"                # Alive and heartbeating, probably busy with something long"},{"line_number":158,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":3,"id":"3fa7e38b_80114eaf","line":155,"in_reply_to":"3fa7e38b_b292a04a","updated":"2019-09-19 15:37:23.000000000","message":"There is a `value or \"... epoch ...\"` bit there, it should be fine.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"}],"ironic/tests/unit/drivers/modules/test_pxe.py":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"18d3f0bd02f7a575c6aa3b3c58be6d18cd2bb20c","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"                                                  persistent\u003dFalse)"},{"line_number":1256,"context_line":""},{"line_number":1257,"context_line":""},{"line_number":1258,"context_line":"class iPXEBootRetryTestCase(db_base.DbTestCase):"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"    boot_interface \u003d \u0027ipxe\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_d8e64b17","line":1258,"updated":"2019-09-20 13:13:53.000000000","message":"Oh. did you want this to inherit from PXEBootRetryTestCase?","commit_id":"8c6eb29dfe68bc7a85d11c8cfd771fb462c21add"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"141d9ea079efda73a55b806339ea6de62398371d","unresolved":false,"context_lines":[{"line_number":1255,"context_line":"                                                  persistent\u003dFalse)"},{"line_number":1256,"context_line":""},{"line_number":1257,"context_line":""},{"line_number":1258,"context_line":"class iPXEBootRetryTestCase(db_base.DbTestCase):"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"    boot_interface \u003d \u0027ipxe\u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"3fa7e38b_18e703e7","line":1258,"in_reply_to":"3fa7e38b_d8e64b17","updated":"2019-09-20 13:21:24.000000000","message":"*facepalm* yes","commit_id":"8c6eb29dfe68bc7a85d11c8cfd771fb462c21add"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"7fe0018cc94f9cd8e02d8712304d7be04eaae939","unresolved":false,"context_lines":[{"line_number":1257,"context_line":""},{"line_number":1258,"context_line":"class iPXEBootRetryTestCase(PXEBootRetryTestCase):"},{"line_number":1259,"context_line":""},{"line_number":1260,"context_line":"    boot_interface \u003d \u0027ipxe\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_5a4b1e58","line":1260,"updated":"2019-09-21 14:28:48.000000000","message":"\\o/","commit_id":"b2834e66619c5f968389fa6ab1cf3e5f99cbafa3"}],"releasenotes/notes/pxe-retry-762a00ba1089bd75.yaml":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"642b7d6556b18ea09554f7bfaa05738f9b289adc","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3fa7e38b_0c259fc2","line":7,"updated":"2019-09-19 14:07:17.000000000","message":"might want to mention the default (no retry).\n\nDo we also want to mention [pxe]boot_retry_check_interval ?","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"492cf06d2363a894ae66ad4915c41afe7714ba47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3fa7e38b_678a1a1c","line":7,"in_reply_to":"3fa7e38b_064496b6","updated":"2019-09-20 10:39:37.000000000","message":"Done","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"959fd6c71e795c198f445e2cbdc38c791d305514","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3fa7e38b_a079eafc","line":7,"in_reply_to":"3fa7e38b_0c259fc2","updated":"2019-09-19 15:37:23.000000000","message":"The default - yes. The check interval is an advanced setting, I\u0027d rather skip it.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"},{"author":{"_account_id":11655,"name":"Julia Kreger","email":"juliaashleykreger@gmail.com","username":"jkreger","status":"Flying to the moon with a Jetpack!"},"change_message_id":"4bc489a548bcca8614ed1f9104efa6ae71572982","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3fa7e38b_064496b6","line":7,"in_reply_to":"3fa7e38b_a079eafc","updated":"2019-09-19 17:04:30.000000000","message":"Kind of +1 on the check interval being mentioned. It is more for \"tuning\" than anything else.","commit_id":"324b82cf28efc3116ac2388e98d304f1c8399867"}]}
