Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provision step should store even guests not fully provisioned #3514

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 15 additions & 19 deletions tmt/steps/provision/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1206,6 +1206,9 @@ def show(self, show_multihost_name: bool = True) -> None:
if self.is_dry_run:
return

if not self.is_ready:
return

for key, key_formatted, value_formatted in self.facts.format():
if key in GUEST_FACTS_INFO_FIELDS:
self.info(key_formatted, value_formatted, color='green')
Expand Down Expand Up @@ -2584,15 +2587,14 @@ def wake(self, data: Optional[GuestData] = None) -> None:
guest.wake()
self._guest = guest

# TODO: getter. Like in Java. Do we need it?
@property
def guest(self) -> Optional[Guest]:
"""
Return provisioned guest

Each ProvisionPlugin has to implement this method.
Should return a provisioned Guest() instance.
Return the provisioned guest.
"""

raise NotImplementedError
return self._guest

def essential_requires(self) -> list['tmt.base.Dependency']:
"""
Expand Down Expand Up @@ -2704,7 +2706,7 @@ def go(self) -> Iterator['ProvisionTask']:
yield ProvisionTask(
logger=new_logger,
result=None,
guest=None,
guest=phase.guest,
exc=None,
requested_exit=exc,
phases=[],
Expand All @@ -2714,7 +2716,7 @@ def go(self) -> Iterator['ProvisionTask']:
yield ProvisionTask(
logger=new_logger,
result=None,
guest=None,
guest=phase.guest,
exc=exc,
requested_exit=None,
phases=[],
Expand All @@ -2724,7 +2726,7 @@ def go(self) -> Iterator['ProvisionTask']:
yield ProvisionTask(
logger=new_logger,
result=None,
guest=phase.guest(),
guest=phase.guest,
exc=None,
requested_exit=None,
phases=[],
Expand Down Expand Up @@ -2833,9 +2835,8 @@ def wake(self) -> None:
# If guest data loaded, perform a complete wake up
plugin.wake(data=self._guest_data.get(plugin.name))

guest = plugin.guest()
if guest:
self._guests.append(guest)
if plugin.guest:
self._guests.append(plugin.guest)

# Nothing more to do if already done and not asked to run again
if self.status() == 'done' and not self.should_run_again:
Expand Down Expand Up @@ -2905,15 +2906,10 @@ def _run_provision_phases(

failed_tasks.append(outcome)

continue

guest = outcome.guest

if guest:
guest.show()
if outcome.guest:
outcome.guest.show()

if guest.is_ready or self.is_dry_run:
self._guests.append(guest)
self._guests.append(outcome.guest)

return all_tasks, failed_tasks

Expand Down
7 changes: 0 additions & 7 deletions tmt/steps/provision/artemis.py
Original file line number Diff line number Diff line change
Expand Up @@ -748,10 +748,3 @@ def go(self, *, logger: Optional[tmt.log.Logger] = None) -> None:
)
self._guest.start()
self._guest.setup()

def guest(self) -> Optional[GuestArtemis]:
"""
Return the provisioned guest
"""

return self._guest
3 changes: 0 additions & 3 deletions tmt/steps/provision/bootc.py
Original file line number Diff line number Diff line change
Expand Up @@ -416,6 +416,3 @@ def go(self, *, logger: Optional[tmt.log.Logger] = None) -> None:
)
self._guest.start()
self._guest.setup()

def guest(self) -> Optional[tmt.steps.provision.Guest]:
return self._guest
7 changes: 0 additions & 7 deletions tmt/steps/provision/connect.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,10 +232,3 @@ def go(self, *, logger: Optional[tmt.log.Logger] = None) -> None:
logger=self._logger, data=data, name=self.name, parent=self.step
)
self._guest.setup()

def guest(self) -> Optional[tmt.GuestSsh]:
"""
Return the provisioned guest
"""

return self._guest
7 changes: 0 additions & 7 deletions tmt/steps/provision/local.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,10 +236,3 @@ def go(self, *, logger: Optional[tmt.log.Logger] = None) -> None:

self._guest = GuestLocal(logger=self._logger, data=data, name=self.name, parent=self.step)
self._guest.setup()

def guest(self) -> Optional[GuestLocal]:
"""
Return the provisioned guest
"""

return self._guest
15 changes: 0 additions & 15 deletions tmt/steps/provision/mrack.py
Original file line number Diff line number Diff line change
Expand Up @@ -1319,14 +1319,6 @@ def start(self) -> None:
self.verbose('primary address', self.primary_address, 'green')
self.verbose('topology address', self.topology_address, 'green')

def stop(self) -> None:
"""
Stop the guest
"""

# do nothing
return

def remove(self) -> None:
"""
Remove the guest
Expand Down Expand Up @@ -1449,10 +1441,3 @@ def go(self, *, logger: Optional[tmt.log.Logger] = None) -> None:
)
self._guest.start()
self._guest.setup()

def guest(self) -> Optional[GuestBeaker]:
"""
Return the provisioned guest
"""

return self._guest
7 changes: 0 additions & 7 deletions tmt/steps/provision/podman.py
Original file line number Diff line number Diff line change
Expand Up @@ -576,10 +576,3 @@ def go(self, *, logger: Optional[tmt.log.Logger] = None) -> None:
self._guest.facts.capabilities[GuestCapability.SYSLOG_ACTION_READ_ALL] = False
# ... while this seems to be forbidden completely.
self._guest.facts.capabilities[GuestCapability.SYSLOG_ACTION_READ_CLEAR] = False

def guest(self) -> Optional[GuestContainer]:
"""
Return the provisioned guest
"""

return self._guest
7 changes: 0 additions & 7 deletions tmt/steps/provision/testcloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -1275,13 +1275,6 @@ def go(self, *, logger: Optional[tmt.log.Logger] = None) -> None:
self._guest.start()
self._guest.setup()

def guest(self) -> Optional[tmt.Guest]:
"""
Return the provisioned guest
"""

return self._guest

def _print_local_images(self) -> None:
"""
Print images which are already cached
Expand Down