tmt icon indicating copy to clipboard operation
tmt copied to clipboard

Unable to clean up guest provisioned by `beaker` plugin

Open psss opened this issue 1 year ago • 4 comments

Using separate steps to provision and finish a plan with guest provisioned using the beaker plugin results in a traceback.

tmt run provision -h beaker
tmt run --last login
tmt run --last finish

The following traceback is generated:

Traceback (most recent call last):
  File "/usr/bin/tmt", line 62, in <module>
    tmt.cli.main()
  File "/usr/lib/python3.11/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
         ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/click/core.py", line 1689, in invoke
    return _process_result(rv)
           ^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/click/core.py", line 1626, in _process_result
    value = ctx.invoke(self._result_callback, value, **ctx.params)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/click/decorators.py", line 26, in new_func
    return f(get_current_context(), *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/tmt/cli.py", line 357, in finito
    click_context.obj.run.go()
  File "/usr/lib/python3.11/site-packages/tmt/base.py", line 2707, in go
    plan.go()
  File "/usr/lib/python3.11/site-packages/tmt/base.py", line 1675, in go
    self.finish.go()
  File "/usr/lib/python3.11/site-packages/tmt/steps/finish/__init__.py", line 136, in go
    guest.remove()
  File "/usr/lib/python3.11/site-packages/tmt/steps/provision/mrack.py", line 504, in remove
    self.api.delete()
    ^^^^^^^^
  File "/usr/lib/python3.11/site-packages/tmt/steps/provision/mrack.py", line 373, in api
    self._api = BeakerAPI(self)
                ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/tmt/steps/provision/mrack.py", line 219, in update_wrapper
    return asyncio.run(func(*args, **kwargs))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/asyncio/runners.py", line 190, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/tmt/steps/provision/mrack.py", line 277, in __init__
    global_context = mrack.context.global_context
                     ^^^^^^^^^^^^^
AttributeError: type object 'Any' has no attribute 'context'

It seems that after wake() up the context is not well prepared. @Tiboris, could you please have a look?

psss avatar Apr 13 '23 14:04 psss