Wednesday, 2016-01-13

*** WANG_Feng has quit IRC03:10
*** WANG_Feng has joined #openstack-smaug03:11
*** c00281451 has quit IRC03:50
*** c00281451 has joined #openstack-smaug03:51
*** yinweimac has joined #openstack-smaug08:29
*** yinweimac has quit IRC09:46
saggiHi all , I made a short document explaining how Smaug will build the dependency graph.11:37
saggihttps://docs.google.com/document/d/1Mkd9RgUVdiRL6iei8Nqzzx4xteKIcd-yjMLEkV4Jc9s/edit?usp=sharing11:37
*** yinweimac has joined #openstack-smaug12:03
yinweimacsaggi12:49
yinweimacthere?12:49
saggiyinweimac: yes12:49
saggihow are you doing?12:49
yinweimacgood, thanks12:49
yinweimacwas thinking your words yesterday12:49
saggiwhich ones?12:49
yinweimacI'm thinking the walk function of ResourceGraphWalker should return a list of tasks or flows?12:50
yinweimacthis is output of the graph walker, right?12:51
saggiNo12:52
saggiThe walker will just call the provider. The provider will call the plugin and get the task and build the task list.12:52
saggiThe graph walker is just the mechanism12:53
yinweimacso you want to make the graph walker a generic one12:53
saggiYes12:53
saggiWe might need walking on the graph for other stuff12:53
saggiSeems like a decent assumption to me12:54
yinweimachmm, so from where we can get the eventual task/flow set?12:55
saggiIt will get queued by the provider.12:55
yinweimacthe provider will keep this flow/task set per walk12:55
yinweimac?12:55
saggiPer operation (protect\delete\etc)12:56
yinweimacSo each call of walk(), we create a new instance of provider?12:56
yinweimacI mean, walk() should be a recursive call, you need pass the partial built task/flow set to its sub call to build the integrate one12:57
saggiNo, the provider calls walk. It's an implementation detail. The provider gets the plan and the graph. The pluggable provider will walk the graph create contexts and queue tasks on it's own.12:58
saggiFor delete it will build the graph from the checkpoint and walk it12:58
yinweimacNo problem, provider calls walk. So in each recursive call of walk, we have provider as the variable to save the result as flow set. If this is true, we need create one provider instance per operation, right?13:01
saggiNo, did you read the doc I uploaded today about how we build the graph?13:02
yinweimacLet me see if I missed the update13:03
saggihttps://docs.google.com/document/d/1Mkd9RgUVdiRL6iei8Nqzzx4xteKIcd-yjMLEkV4Jc9s/edit#13:03
saggiI just shared it on IRC for now. Will upload it to gerrit later today13:03
yinweimacyes, I think we're on the same page on resource graph building13:12
*** gampel has joined #openstack-smaug13:13
yinweimacmy question is where to save the result during a recursive call, where the recursive call is ResourceGraphWalker.walk(node)13:13
saggiIt's the listeners responsibility to keep the sate. In this case it's the Provder.13:14
saggiThe same instance13:15
yinweimacon enter of each node, the listener would be notified to call the plugin to generate tasks, then shall we return those tasks to its parent call? or we just keep them in a variable all recursive calls can access?13:15
yinweimacso your answer is we save the result in provider instance13:16
yinweimacthen my question is, we need create new instance of provider per operation13:16
saggiYes, or some other contextual instance since the same provider might be invoked multiple times.13:16
saggiyinweimac: Now I understand the question. No, the provider could manage different call contexts in the same instance.13:17
yinweimacyes, I prefer other contextual instance13:17
saggiyinweimac: I agree13:17
yinweimacwe only keep one provider instance per provider13:18
saggiYes13:18
yinweimacso you want to link those tasks during Listener.on_leave_node?13:18
yinweimacI suppose new task of the resource is created during listener.on_enter_node, if the node is first time visited13:20
saggiYes13:20
saggiI still think we should allow task creation in both enter and leave13:20
yinweimacthen we DVF walk its dependencies and build tasks of dependencies resources13:20
saggiDVF?13:21
yinweimacafter that, on_leave_node, we just link the task of current node to tasks built from dependencies13:21
yinweimacDFS, sorry13:22
yinweimacDVF is a brand of dresses, forget that :)13:22
yinweimacwhy shall we allow task creation in leave?13:24
saggiLeave let's you know you visited all the child nodes. So if we have a plugin that is registered for VM and Cinder Volume and would like to make one operation for each VM\Volume group. It could use the on_leave_node() callback to know that there are no more volumes for that VM.13:28
yinweimacBTW, Provider needs one more interface like build_flow_graph(backup_plan):[]flow?13:44
*** yinweimac has quit IRC13:58
saggiyinwei: Atom could contain multiple flows by design14:09
*** gampel has left #openstack-smaug14:56
*** gampel has joined #openstack-smaug16:08
*** gampel has quit IRC16:08
openstackgerritSaggi Mizrahi proposed openstack/smaug: Pluggable protection provider doc  https://review.openstack.org/26226416:11
openstackgerritSaggi Mizrahi proposed openstack/smaug: Proposed Smaug API v1.0  https://review.openstack.org/24475616:22
*** wanghao has quit IRC18:08
*** wanghao has joined #openstack-smaug18:23

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!