docs: def _try_to_release_dynamic_segment(self, context, migration=False):
          """Release dynamic segment if necessary
  
          If this port was the last port using a segment and the segment was
          allocated by this driver, it should be released
          """
          if migration:
              binding_levels = context.original_binding_levels
          else:
              binding_levels = context.binding_levels
          LOG.debug("_try_release_dynamic_segment: "
                    "binding_levels=%(bl)s", {'bl': binding_levels})
          if not binding_levels:
              return
  
          for prior_level, binding in enumerate(binding_levels[1:]):
              allocating_driver = binding_levels[prior_level].get(
                  driver_api.BOUND_DRIVER)
              if allocating_driver != a_const.MECHANISM_DRV_NAME:
                  continue
              bound_segment = binding.get(driver_api.BOUND_SEGMENT, {})
              segment_id = bound_segment.get('id')
              if not db_lib.segment_is_dynamic(segment_id):
                  continue
              if not db_lib.segment_bound(segment_id):
                  context.release_dynamic_segment(segment_id)
                  LOG.debug("Released dynamic segment %(seg)s allocated "
                            "by %(drv)s", {'seg': segment_id,
                                           'drv': allocating_driver})