diff --git a/docs/removal.md b/docs/removal.md new file mode 100644 index 00000000..d932077a --- /dev/null +++ b/docs/removal.md @@ -0,0 +1,29 @@ +# Problems to solve with removal operation + +1. It is tricky to figure out what to do with data that will be left when +you are removing resource that is a parent for other resources. + +The basic example is a node resource. +If hosts_file1 subscribed to node properties, and we will just remove +node - hosts_file1 will be left with corrupted data. +Validation is not a solution, because we can not expect user to remove +each resource one-by-one. + +log task=hosts_file1.run uid=c1545041-a5c5-400e-8c46-ad52d871e6c3 + ++ ip: None + ++ ssh_user: None + ++ hosts: [{u'ip': None, u'name': u'riak_server1.solar'}] + ++ ssh_key: None + +Proposed solution: + +Add `solar res remove node1 -r` where *r* stands for recursive. +During this operation we will find all childs of specified resource, and +stage them for removal as well. + +2. If so we need to be able to determine what to do with child resource +on removal. +Basically this seems like another type of event: +hosts1.remove -> success -> node1.remove +And +hosts2.update -> success -> node2.remove