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

Unmanagement ideas #364

Open
ctheune opened this issue Mar 30, 2023 · 4 comments
Open

Unmanagement ideas #364

ctheune opened this issue Mar 30, 2023 · 4 comments

Comments

@ctheune
Copy link
Collaborator

ctheune commented Mar 30, 2023

We talked about the potential to improve the "unmanagement" story by allowing components to storing "uninstall receipts" and execute any uninstall receipts that are not "claimed" by a component during a run.

I think we don't have an issue for this yet, so here it is!

Also, I just stumbled over this issue that might be benefit from unmanagement: https://yt.flyingcircus.io/issue/FC-30068/symlink-and-cleanup-no-working-as-expected

@ctheune
Copy link
Collaborator Author

ctheune commented Apr 26, 2023

There's also another instance where unmanagement would have reduced the complexity of a change massively:
https://gitlab.flyingcircus.io/flyingcircus/fc.directory.deployment/-/merge_requests/65

@PhilTaken
Copy link
Member

A similar approach for files might be temporary states, where intermediate files are stored in a temp directory.
Archives for example, where you only require the contents of the archive, not the archive itself, could be downloaded to a temporary location, unpacked there and subsequently deleted without requiring the user to manage the download location or the deletion of the archive manually.

In python pseudo-code this might look like

with S3Download(...) as archive:
    extract(archive, inplace=True)
    copy(f"{archive}/README.txt", f"{workdir}/README.txt")

# the archive is being deleted right after the copy or exists only in `/tmp`

I am not sure how well that would fit the batou configure-verify-update model though, maybe a wrapper component like

self += TempDir(S3Download(...))
self.temp_archive = self._
...

could work better?

@PhilTaken PhilTaken pinned this issue Jul 14, 2023
@ctheune ctheune modified the milestones: batou 2.5, batou 2 - future Nov 29, 2023
@frlan
Copy link
Member

frlan commented Oct 30, 2024

We just came along an idea

  • Adding an unmanage() method aside of configure(), verify(), update() where one can write down cod that is executed on removing time
  • During deployment batou might know what is missing compared to n-1 and executing the unmanage() code
  • Introducing subfolders with deployment versions at target so e.g. the deployment folder could look like

├── code
│   ├── current
│   │   ├── components
│   │   │   ├── apache
│   │   │   ├── nginx
│   │   │   └── postgresql
│   │   └── environments
│   │       ├── production
│   │       └── staging
│   └── last
│       ├── components
│       │   ├── apache
│       │   ├── nginx
│       │   └── postgresql
│       └── environments
│           ├── production
│           └── staging
└── work
    ├── apache
    └── nginx
        └── docroot

@ctheune
Copy link
Collaborator Author

ctheune commented Nov 6, 2024

Yeah, that's a variation on the "uninstall recipe" which is a bit more generic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants