[tc][all] Project deletion community goal for Train cycle
Tobias Urdin
tobias.urdin at binero.se
Wed Jan 30 08:39:07 UTC 2019
Regarding gmann's #1. Existing OSPurge doesn't have any specific logic
per-se
but would just return no resources based on the has_service() method
which I would
assume is checking endpoints. [1]
+1 On having a pluggable approach and to Adrian's feedback on having a
strict policy
on how they should be implemented.
Best regards
[1] https://review.openstack.org/#/c/600919/1/ospurge/resources/heat.py
On 01/30/2019 07:36 AM, Ghanshyam Mann wrote:
> ---- On Wed, 23 Jan 2019 08:21:27 +0900 Adrian Turjak <adriant at catalyst.net.nz> wrote ----
> > Thanks for the input! I'm willing to bet there are many people excited
> > about this goal, or will be when they realise it exists!
> >
> > The 'dirty' state I think would be solved with a report API in each
> > service (tell me everything a given project has resource wise). Such an
> > API would be useful without needing to query each resource list, and
> > potentially could be an easy thing to implement to help a purge library
> > figure out what to delete. I know right now our method for checking if a
> > project is 'dirty' is part of our quota checking scripts, and it has to
> > query a lot of APIs per service to build an idea of what a project has.
> >
> > As for using existing code, OSPurge could well be a starting point, but
> > the major part of this goal has to be that each OpenStack service (that
> > creates resources owned by a project) takes ownership of their own
> > deletion logic. This is why a top level library for cross project logic,
> > with per service plugin libraries is possibly the best approach. Each
> > library would follow the same template and abstraction layers (as
> > inherited from the top level library), but how each service implements
> > their own deletion is up to them. I would also push for them using the
> > SDK only as their point of interaction with the APIs (lets set some hard
> > requirements and standards!), because that is the python library we
> > should be using going forward. In addition such an approach could mean
> > that anyone can write a plugin for the top level library (e.g. internal
> > company only services) which will automatically get picked up if installed.
>
> +100 for not making keystone as Actor. Leaving purge responsibility to service
> side is the best way without any doubt.
>
> Instead of accepting Purge APIs from each service, I am thinking
> we should consider another approach also which can be the plugin-able approach.
> Ewe can expose the plugin interface from purge library/tool. Each service implements
> the interface with purge functionality(script or command etc).
> On discovery of each service's purge plugin, purge library/tool will start the deletion
> in required order etc.
>
> This can give 2 simple benefits
> 1. No need to detect the service availability before requesting them to purge the resources.
> I am not sure OSpurge check the availability of services or not. But in plugin approach case,
> that will not be required. For example, if Congress is not installed in my env then,
> congress's purge plugin will not be discovered so no need to check Congress service availability.
>
> 2. purge all resources interface will not be exposed to anyone except the Purge library/tool.
> In case of API, we are exposing the interface to user(admin/system scopped etc) which can
> delete all the resources of that service which is little security issue may be. This can be argued
> with existing delete API but those are per resource not all. Other side we can say those can be
> taken care by RBAC but still IMO exposing anything to even permissiable user(especially human)
> which can destruct the env is not a good idea where only right usage of that interface is something
> else (Purge library/tool in this case).
>
> Plugin-able can also have its cons but Let's first discuss all those possibilities.
>
> -gmann
>
> >
> > We would need robust and extensive testing for this, because deletion is
> > critical, and we need it to work, but also not cause damage in ways it
> > shouldn't.
> >
> > And you're right, purge tools purging outside of the scope asked for is
> > a worry. Our own internal logic actually works by having the triggering
> > admin user add itself to the project (and ensure no admin role), then
> > scope a token to just that project, and delete resources form the point
> > of view of a project user. That way it's kind of like a user deleting
> > their own resources, and in truth having a nicer way to even do that
> > (non-admin clearing of project) would be amazing for a lot of people who
> > don't want to close their account or disable their project, but just
> > want to delete stray resources and not get charged.
> >
> > On 23/01/19 4:03 AM, Tobias Urdin wrote:
> > > Thanks for the thorough feedback Adrian.
> > >
> > > My opinion is also that Keystone should not be the actor in executing
> > > this functionality but somewhere else
> > > whether that is Adjutant or any other form (application, library, CLI
> > > etc).
> > >
> > > I would also like to bring up the point about knowing if a project is
> > > "dirty" (it has provisioned resources).
> > > This is something that I think all business logic would benefit from,
> > > we've had issue with knowing when
> > > resources should be deleted, our solution is pretty much look at
> > > metrics the last X minutes, check if project
> > > is disabled and compare to business logic that says it should be deleted.
> > >
> > > While the above works it kills some of logical points of disabling a
> > > project since the only thing that knows if
> > > the project should be deleted or is actually disabled is the business
> > > logic application that says they clicked the
> > > deleted button and not disabled.
> > >
> > > Most of the functionality you are mentioning is things that the
> > > ospurge project has been working to implement and the
> > > maintainer even did a full rewrite which improved the dependency
> > > arrangement for resource removal.
> > >
> > > I think the biggest win for this community goal would be the
> > > developers of the projects would be available for input regarding
> > > the project specific code that does purging. There has been some
> > > really nasty bugs in ospurge in the past that if executed with the admin
> > > user you would wipe everything and not only that project, which is
> > > probably a issue that makes people think twice about
> > > using a purging toolkit at all.
> > >
> > > We should carefully consider what parts of ospurge could be reused,
> > > concept, code or anything in between that could help derive
> > > what direction we wan't to push this goal.
> > >
> > > I'm excited :)
> > >
> > > Best regards
> > > Tobias
> > >
> >
> >
>
>
>
>
More information about the openstack-discuss
mailing list