Tuesday, 2016-01-12

*** zengyingzhe_ has joined #openstack-smaug00:41
*** WANG_Feng has quit IRC01:37
*** WANG_Feng has joined #openstack-smaug01:38
*** zengyingzhe_ has quit IRC01:59
*** jhesketh has quit IRC02:05
*** jhesketh has joined #openstack-smaug02:05
*** zengyingzhe_ has joined #openstack-smaug02:35
*** zengyingzhe_ has quit IRC02:44
*** WANG_Feng has quit IRC04:54
*** WANG_Feng has joined #openstack-smaug05:39
*** zengyingzhe_ has joined #openstack-smaug07:07
zengyingzhe_saggi, hi08:10
saggizengyingzhe_: hi08:30
zengyingzhe_how are you08:30
zengyingzhe_the interface create_checkpoint from ProtectionProvider, is it the entry for protecting resources?08:32
zengyingzhe_Or it's just responsible for creating a checkpoint in bank?08:33
saggiIt creates the checkpoints and asynchrniously fills it up with data08:37
zengyingzhe_So it's also responsible for doing the operation by executing the task returned by resource plugins?08:39
zengyingzhe_If so, why there just a root_resource parameter, shouldn't there be other parameters, such as plan info?08:40
zengyingzhe_Otherwise, where does the context passed to get_pre/post_task come from?08:42
saggicreate_checkpoint should get a checkpoint instance as a parameter08:43
saggiresolve the plan_id and create the full tree08:43
saggizengyingzhe_: ^^^^^^08:44
zengyingzhe_You mean the checkpoint will be created first, before calling create_checkpoint in provider?08:45
zengyingzhe_I'm quite confused.08:46
*** yinweiphone has joined #openstack-smaug09:09
yinweiphonesaggi, are you there?09:11
yinweiphonewanna confirm the output of graph walker09:11
yinweiphonei suppose the graph walker listener will watch on the traversing of the resource graph09:12
yinweiphoneand if we implement a listener class who will produce task per resource, and we link those tasks with the dependencies between resource nodes, then we will get a graph flow or sevreral graph flows09:15
yinweiphoneso the output of the graph walker could be a set of graph flows by this listener implementation, right?09:16
yinweiphonepls leave your comment when you see the msg, saggi09:17
*** openstackgerrit has quit IRC09:17
*** openstackgerrit has joined #openstack-smaug09:17
*** yinweiphone has quit IRC09:20
saggiyinweiphone: We would walk from each source in our graph. This would make sure we iterate all the nodes in the correct order09:21
zengyingzhe_saggi, You mean the checkpoint will be created first, before calling create_checkpoint in provider?09:22
saggiThe checkpoint is given from the user in the post request09:22
saggiThen we need to process it (add full plan and resource tree) and persist it with the state "in progress".09:23
*** yinweiphone has joined #openstack-smaug09:23
saggithan we asynchronously start backing up09:23
saggiThat means that the user can now query the checkpoint ID for full status information09:23
saggiand if we fail we have a complete picture of what happened and how to clean up09:23
zengyingzhe_The post request doesn't include checkpoint.09:24
zengyingzhe_Just plan info09:24
yinweiphoneI'm thinking the revert logic09:25
yinweiphoneany task raises exception should revert its traces like record under checkpoint09:26
zengyingzhe_The revert here means totally undo the task, such as remove the backup object?09:27
yinweiphoneshall we revert the whole flow if server all task raised exception? or we keep the checkpoint and turn it to failure status at last09:27
yinweiphonezengyingzhe_: yes, revert does include that work09:28
zengyingzhe_I think setting the failure status would be much easier.09:28
yinweiphonezengyingzhe_: we could give graph walker the checkpoint as input, and it could put it into task it generates09:29
yinweiphonezengyingzhe_: then user will decide whetherclean up garbage, right?09:30
zengyingzhe_yinweiphone: So there will be another type of graph walker, for checkpoint?09:32
yinweiphonezengyingzhe_: sounds better. then we just add a retry task on retriable exception, otherwise we just tolerate the task failure until whole flow finishes09:32
yinweiphonezengyingzhe_: graph walker should be the same, we just implement different listeners09:33
yinweiphonezengyingzhe_: ok, you mean how to pass checkpoint to tasks09:35
yinweiphoneyes, then we won't pass checkpoint to graph walker, but build a listener class with checkpoint as field.09:36
yinweiphonejust my guessing09:37
yinweiphonecould have saggi to confirm09:38
saggiyinweiphone: I'll catch up in 2 min09:38
zengyingzhe_yinweiphone: Could implement like that. But we should confirm if we want to revert or just set checkpoint status first.09:39
yinweiphonetongue has question how to pass checkpoint to tasks built during graph walking09:39
yinweiphoneyingzhe has question09:39
saggisorry had to send the agenda for today's meeting09:40
yinweiphonezengyingzhe_: I prefer persist failures in checkpoint,and have user to choose delete them or not. this is the routine of openstack09:41
yinweiphonesaggi: np09:41
zengyingzhe_yinweiphone, I agree with you09:41
yinweiphonesaggi: could talk to you later when you're free09:42
zengyingzhe_And this could simplify the logic of protection service.09:42
* saggi is catching up with chat09:42
yinweiphonezengyingzhe_: sorry, I missed saggi's peeve answers09:43
yinweiphonezengyingzhe_: did he agree the output of graph walking is a set of flows?09:43
* saggi is done09:44
saggiOK, so we need to keep the checkpoint if it fails09:44
saggiotherwise the user has no way to check what the error was09:44
zengyingzhe_yinweiphone, i didn't discuss that with saggi09:44
saggiit should be in an invalid state with all data outside the bank cleared. The user needs to manually mark it for deletion.09:45
saggiOtherwise the user might miss the error.09:45
yinweiphonesaggi: is it necessary to retrieve prev task or post task from each plugin?09:45
yinweiphonethe resource graph has built dependency  already09:46
yinweiphonewe just have build task on walking each resource, and link those tasks by the dependency of the graph09:47
saggiI am starting to think we might just need one call instead of two. The original two calls were for the version were we didn't have the sub-graph passed.09:47
yinweiphoneyes09:47
yinweiphoneagree one call per plugin would be enough, since we've already built dependency on resource graph09:49
* saggi is thinking about it09:49
yinweiphonesaggi: beyond this, we maybe not involve plugin to construct task09:50
zengyingzhe_saggi, you said all data outside the bank cleared, so the data already backuped should be removed before setting checkpoint to a failure status?09:50
yinweiphonezengyingzhe_: backed up data should be cleared together with removing checkpoint09:50
saggiyinweiphone: Who will construct the task than? The plugin is the only one that knows what to do.09:51
yinweiphonesaggi: graph walker listener will09:51
saggizengyingzhe_: I did but thinking about it again I'd say that we should leave everything as is when we fail. That way we know data is only deleted in deletion state which is simpler.09:52
zengyingzhe_saggi, OK, understand.09:52
yinweiphoneplugin could be a param of the task, when the task is constructed by the liestener , it will pass in the plugin09:52
saggiyinweiphone: It seems like it's the wrong way around. By creating the task itself it can push all the information it will need when the task is actually run.09:53
saggiyinweiphone: It could also just do nothing or create a chain of smaller tasks.09:54
saggiIf the task just get the plugin how will it know the context?09:54
yinweiphonesaggi, the execute of the task would just be call protect or restore of the plugin09:55
zengyingzhe_yinweiphone, you mean just telling plugin what to do, like protect or restore, then plugin will archieve it internally?09:58
yinweiphonethe context is still kept inside the plugin, just it doesn't construct task inside plugin09:58
saggiThis removes the task preperation stage. This means that we can't group calls for example.09:58
saggiIf we want to run the plugin just once for all volumes.09:59
yinweiphoneit sounds weird to have plugin to generate task in plugin09:59
saggiIt's just separating the planning phase from the execution phase. For example, if we want to support OceanStoreDJ we need to actually build a policy of all the resources we want to back up and pass them to OSDJ. This will actually be one task (executing the policy) for multiple disconnected resources.10:02
yinweiphoneyes, i agree with the separation of the two phases10:03
yinweiphoneand i understand the graph walking is to prepare tasks10:04
zengyingzhe_task is generated by listener, and plugin only need to provide one interface like run_task(), and run_task will execute this task according to the task content, for example, protect or restore, is this what you said about?10:10
saggiBy returning a Task the task could be anything. It could be Task(target=self.protect, args=(...)) or it could be Flow(Task(target=self.phaseA), Task(target=phaseB)).10:12
saggiWe don't enforce and interface10:12
saggiyinweiphone: Thinking about it some more I realize that without the `post` callback we have no way of aggregating tasks since in the original design it would have been done in the post call of the parent.10:15
zengyingzhe_yes, it would be more flexible if task returned by plugin, it could be anything as long as plugin can understand.10:15
zengyingzhe_saggi, back to my question10:16
saggizengyingzhe_: Could you repeat it :) too much talk10:17
zengyingzhe_The checkpoint is given from the user in the post request. There is no this parameter in checkpoint post request.10:17
*** yinweiphone has quit IRC10:22
saggizengyingzhe_: http://ur1.ca/oemnw10:22
saggizengyingzhe_: from the API doc10:22
saggizengyingzhe_: ?10:31
zengyingzhe_saggi, I'm checking it. :)10:32
zengyingzhe_You go to have lunch first, we can talk later.10:32
saggizengyingzhe_: sure10:33
zengyingzhe_See you later.10:33
*** openstackgerrit has quit IRC11:17
*** openstackgerrit has joined #openstack-smaug11:17
*** WANG_Feng has quit IRC11:18
*** WANG_Feng has joined #openstack-smaug11:31
zengyingzhe_saggi, you there?11:42
*** zengyingzhe_ has quit IRC12:24
openstackgerritchenying proposed openstack/smaug: Basic design doc for API Service  https://review.openstack.org/26633812:35
*** zhonghua-lee has joined #openstack-smaug13:54
*** zengyingzhe has joined #openstack-smaug13:55
zengyingzheHi13:56
saggizengyingzhe: hi13:56
zengyingzheReady for meeting? :)13:56
zhonghua-leehi,saggi13:57
saggizengyingzhe: yes13:57
saggithere are 3 minutes on my clock until it starts13:57
zengyingzheyes13:57
*** WANG_Feng has quit IRC13:58
*** WANG_Feng has joined #openstack-smaug13:59
zhonghua-leewho can give me the catalog link please?13:59
*** chenzeng has joined #openstack-smaug14:52
*** zengyingzhe has quit IRC14:52
chenzengsaggi:sorry, it is 11:00 pm in my country. can we talk tomorrow? I think, I understand your design about OperationEngine.14:54
saggichenzeng: Sure, good night!14:55
chenzengsaggi:thanks.14:57
*** chenzeng has quit IRC15:03
*** zhonghua-lee has quit IRC15:23
*** zhonghua-lee has joined #openstack-smaug15:24
*** zhonghua-lee has quit IRC15:28
openstackgerritSaggi Mizrahi proposed openstack/smaug: Pluggable protection provider doc  https://review.openstack.org/26226416:51
*** gampel has joined #openstack-smaug17:31
*** gampel has quit IRC18:06
*** wangfeng_yellow has quit IRC21:05
*** wangfeng_yellow has joined #openstack-smaug21:06
*** gampel has joined #openstack-smaug23:16
*** gampel has quit IRC23:46

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