Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-17590

Change ipmitool.py invocation of eventlet.green.subprocess to use native subprocess

XMLWordPrintable

    • Icon: Story Story
    • Resolution: Obsolete
    • Icon: Undefined Undefined
    • None
    • None
    • openstack-ironic
    • None
    • 3
    • False
    • Hide

      None

      Show
      None
    • False
    • rhos-ops-day1day2-hardprov
    • HardProv Sprint 7
    • 1

      Goal: 

      • As a developer, I need to remove the use of eventlet. In order to facilitate that, i need to refactor the ipmitool driver code in Ironic such that we no longer use eventlet.green.subprocess as the mechanism wrapper around execution of ipmitool.

       

      Context:

      Ironic’s ipmitool driver invokes ipmitool (quite literally) in rapid and repeated fashion on multiple threads to perform actions like requesting the node to network boot, or check the status of power. This is done with subprocess for reasons, which should be slightly obvious. We need the stdout text to understand the status. And we need to do it in a way to not explicitly block other invocations.

      **

      The ideal path forward is to just swap to stock subprocess, but this will need to be done with care. Ideally this is done after the base threading model changes in the conductor to lessen the overall impact, but it may need to be done together, or before depending on availability.

      **

      This area is sensitive in ironic because ipmitool execution can be very problematic and unfriendly code wise because each BMC command execution can take a minimum of 3-5 seconds, and since it is over UDP, packet loss can cause additional problems and unresponsive BMCs can cause the socket to sort of hang until the process fails and executes. This can be further compounded by silly operator settings, and to highlight this example, just a few days ago this discussion occurred in upstream IRC - Start with rm_work at 18:05 https://meetings.opendev.org/irclogs/%23openstack-ironic/%23openstack-ironic.2025-06-03.log.html

       

      Acceptance Criteria:

      • ipmitool.py no longer uses eventlet.green.subprocess.
      • Change passes CI
      • Developer or QA validates no observed issues attempting to run the test suite against devstack with virtualbmc with multiple nodes. This is critical for the reasons mentioned in the context section.

              jkreger@redhat.com Julia Kreger
              jkreger@redhat.com Julia Kreger
              rhos-dfg-hardprov
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated:
                Resolved: