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

bootc: remove qcow2 when plan is done #3419

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

henrywang
Copy link
Contributor

Plan with bootc provision builds its own qcow2 before test run. Each plan has different Containerfile or container image configured, so each plan should use its own qcow2 built from Contaienrfile or container image. The old or previous plan used qcow2 image should be removed when plan is done.

Resolve: #3414

# plan with bootc provision should build its own qcow2 before test run
# test qcow2 image should be removed when plan is done
tmt.utils.Command(
"rm", "-vf", f"{DEFAULT_TMP_PATH}/images/disk.qcow2"
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. unlink should work as well: (DEFAULT_TMP_PATH / 'images/disk.qcow2').unlink(missing_ok=True)
  2. but what caught my eye: is this a single path shared by all plans and all bootc plugin invocations? That seems like a huge risk of conflict, being a shared, mutable state without proper synchronization. Can the name be changed, to reflect which run, plan, and guest it belongs to? Because this is not good, if all runs and plans all compete over the same file, we are just asking for trouble. Either its name or path should be different, perhaps the file should be moved under a workdir, something like this.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the comment.

The bib build disk.qocw2 and save into {self.workdir}/qcow2/disk.qcow2. The workdir is different for each plan.

The disk.qcow2 should be copied to DEFAULT_TMP_PATH}/images by virtual.testcloud when testcloud run VM. Is this correct?

What happens when defined qcow2 path https://github.com/teemtee/tmt/blob/5dc0a1f4441a7a3727fc36160302355d7d737363/tmt/steps/provision/bootc.py#L318C31-L318C62 for each plan and run it

self._guest = GuestBootc(
?

The name disk.qcow2 is hardcoded by bib.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

data.image = f"file://{self.workdir}/qcow2/disk.qcow2" looks good, that's what I would expect to exist.

The disk.qcow2 should be copied to DEFAULT_TMP_PATH}/images by virtual.testcloud when testcloud run VM. Is this correct?

I see. No, I think this spells trouble. I don't mean now, bootc plugin is basically a tech preview, but once more people start playing with it and someone tries more than one provision phase in their plan, multiple bootc, it may easily become a problem as virtual would use the same qcow2 file for all of them. Which may not necessarily be the right choice...

I think it's something left to resolve, sooner rather than later, and we might need help from testcloud owners.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @happz! I'm not tmt expert, so anyone can help on this?

@thrix thrix added this to the 1.41 milestone Dec 11, 2024
@thrix thrix added the priority | must high priority, must be included in the next release label Dec 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
priority | must high priority, must be included in the next release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

bootc plugin should delete qcow2 image when plan finished
3 participants