09:01:03 <saggi> #startmeeting karbor
09:01:04 <openstack> Meeting started Tue Sep 13 09:01:03 2016 UTC and is due to finish in 60 minutes.  The chair is saggi. Information about MeetBot at http://wiki.debian.org/MeetBot.
09:01:05 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
09:01:08 <openstack> The meeting name has been set to 'karbor'
09:01:10 <saggi> Hi everyone
09:01:13 <zhonghua> hi
09:01:16 <leon_wang> hi
09:01:20 <chenying_> hi
09:01:23 <yuval> hey
09:01:33 <xiangxinyong> hello
09:01:58 <saggi> Yinwei has a bunch of stuff in the agenda
09:02:07 <saggi> does anyone know if she's coming?
09:02:28 <leon_wang> saggi:she not here?
09:02:54 <zhonghua> she will join in 10 mins
09:03:43 <yuval> meanwhile, if anyone is lurking in #openstack-smaug, please leave that channel
09:03:44 <leon_wang> today we'll have a lot to talk :)
09:03:57 <saggi> #topic Decouple checkpoint API from provider API to become an standalone API(leon_wang)
09:04:33 <leon_wang> Here is the patch: https://review.openstack.org/#/c/369170/
09:05:17 <leon_wang> we can talk about it free
09:05:23 <saggi> leon_wang: I read it. I have to say that I don't agree with it. There is no way for us to decouple it from the provider since this is where the information is.
09:05:34 <zhonghua> as my email said, I am afraid of that there will be many impact points
09:05:39 <leon_wang> saggi:why?
09:05:55 <saggi> It's like accessing a file without knowing the directory
09:06:01 <saggi> This is where the information is
09:06:16 <saggi> querying all the providers can be done from the API or UI
09:06:20 <chenying_> What's your oppions about it. I think if this API is independent. we need think more about how to save checkpoint metadata/data to bank.
09:06:35 <leon_wang> saggi:then we can create a new directory and we should do it.
09:06:49 <saggi> I don't think you understand the analogy.
09:06:58 <saggi> How do I know where to find a checkpoint id
09:07:05 <saggi> I will have to check all the providers
09:07:30 <saggi> We also don't guarantee that a checkpoint ID is unique between providers
09:08:05 <leon_wang> saggi:maybe you have a little misunderstand...
09:08:24 <saggi> maybe
09:08:30 <leon_wang> saggi:i don't mean to decouple all of it ,just api
09:08:32 <zhonghua> leon_wang: what's your proposal?
09:09:15 <yuval> we do have redundancy of parameters in checkpoint rest API
09:09:21 <zhonghua> leon_wang: what's your meaning? change the API file location?
09:09:31 <yuval> when you query checkpoints from a provider, provider_id is both in url and in request body
09:09:45 <yuval> zhonghua: what impact points?
09:10:14 <zhipeng> i think what leon meant is that we have a seperate checkpoint api rather than have it all in the provider api
09:10:19 <zhonghua> yuval: framewrok, model, I don't know
09:10:29 <leon_wang> zhonghua:kinda, we can just add a database table to save the provider_id and some other parameters.
09:10:47 <zhonghua> leon_wang: yes, we have.
09:10:57 <saggi> I understood it's about removeing the paramter from the URI
09:11:12 <saggi> we can remove it from the body but not the URI
09:11:25 <leon_wang> zhonghua:then we don't need to pass provider from client
09:11:36 <chenying_> Now if a tenant want query all the checkpoint which he create. He must know all the provider_id he have slected. If the checkpoint api is independent without provider_id, he can query the checkpoint with different provider at the same time.
09:12:08 <saggi> I don't like being able to query all the banks at once
09:12:12 <zhonghua> saggi: sounds not your understanding if i am correct. he wants to change the URI instend of parameter
09:12:21 <saggi> they query could get stuck because one bank is inaccessible
09:12:27 <saggi> and we could get duplicates
09:12:32 <zhonghua> leon_wang: make sense
09:12:44 <yuval> chenying_: he meant moving the provider id to the body of the request. the provider id is still required
09:13:03 <leon_wang> yuval:yes
09:13:29 <leon_wang> i don't mean to remove provider from checkpoint
09:13:41 <chenying_> oh  just move the place of provider.
09:14:11 <leon_wang> we can just save the provider_id when we create the checkpoint
09:14:16 <saggi> I look at it like how swift users /{container}/{object}
09:15:06 <chenying_> What would be the benefit of moving the provider_id from url to post body?
09:15:30 <saggi> It would just be harder to convery that it's mandatory
09:15:33 <saggi> IMHO
09:16:27 <yinwei_lab> hi
09:16:34 <zhonghua> chenying_: that's the decouple meaning. I think
09:17:15 <leon_wang> chenying_:By definition in WIKI, Protection Provider is a composition of Protection Plugins covering supported resource types, and a Bank Plugin for persisting the data, whereas Checkpoint is the state, data, and metadata of protected resources, in a point of time.
09:18:16 <saggi> checkpoints are contained in a bank. But since a Bank doesn't have an explicit API entry the provider is the closest point
09:18:25 <leon_wang> IMO,the checkpoint operation is some like plan
09:18:34 <saggi> plans are local
09:18:38 <saggi> they don't exist in the bank
09:18:58 <zhipeng> saggi: but users do want to operate on the checkpoints right?
09:19:10 <zhipeng> do all the CRUD operations
09:19:28 <saggi> Similar to objects in swift
09:19:39 <zhipeng> or if they have an orchestrator, it should be able to perform LCM of checkpoints in Karbor
09:19:57 <yinwei_lab> zhipeng, the difference of checkpoints and plans is: checkpoints will be shared among karbors but plans won't
09:20:32 <saggi> When you want to list a checkpoints you are actually listing a provider
09:20:39 <saggi> similar to a container and ojects
09:20:45 <leon_wang> saggi:And checkpoint may provide much more function later,why don't we do it now?
09:21:11 <saggi> leon_wang: It's not a question of functionality. You can have all the functionality under any URI
09:21:15 <saggi> the main issues is that
09:21:28 <saggi> GET /api/v1/checkpoints/ will never work
09:21:45 <saggi> only GET/api/v1/checkpoints/?provider_id=123
09:21:57 <saggi> this means you have a trivial endpoints that doesn't work
09:22:11 <zhipeng> leon_wang meant he will still have the provider_id in the post body right ?
09:22:13 <leon_wang> saggi:we can't remove the provider_id?
09:22:21 <leon_wang> zhipeng:yes
09:22:39 <saggi> You can't query all the providers at once in the same call. It will mean that Karbor has to go list all the banks.
09:22:44 <zhonghua> leon_wang: does that mean your proposal is only to change rest api?
09:22:52 <leon_wang> saggi:we just move the provider_id to the body.
09:23:01 <chenying_> a provider_id mean a constant bank. Here the provider_id in the checkpoint api url mean this checkpoint data belong to this bank of provider. So I think it is reasonable.
09:23:07 <zhipeng> zhonghua yes I think he might mean that
09:23:15 <saggi> leon_wang: It still means that GET /api/v1/checkpoints can't just work
09:23:53 <saggi> It's problematic to have such a simple thing not work. It's the first things people will try and do and it can't work.
09:24:05 <leon_wang> saggi:even after we create a checkpoint API module?
09:24:15 <zhonghua> zhipeng: ok, it makes sense
09:24:35 <saggi> It can't logically work. Since if the user doesn't specify the provider_id we don't have enough information
09:24:45 <saggi> also /api/v1/checkpints/123 is not unique
09:25:11 <saggi> since we don't guarantee that IDs are unique across providers
09:25:18 <saggi> since a bank could have been cloned
09:25:37 <saggi> So simple REST invariants are violated
09:25:47 <saggi> This is why Swift did it
09:25:59 <saggi> *probably
09:26:50 <zhonghua> saggi: the user can provide the provider_id via filling the request body parameter, if I understand correctly. :)
09:27:02 <leon_wang> saggi: Sorry i stiil no get it why checkpoint is related a provider.
09:27:02 <saggi> This is far from trivial or standard
09:27:45 <leon_wang> saggi:why we can't promise it's unique?
09:27:50 <saggi> leon_wang: Since the checkpoint sits in the bank which is part of the provider
09:28:11 <saggi> leon_wang: Since banks are not coordinated
09:28:28 <leon_wang> saggi: but logically they don't belong.
09:28:45 <saggi> leon_wang: What does not belong logically?
09:28:47 <leon_wang> saggi:according to the wiki definition
09:29:06 <saggi> According to the definition it's a group of plugins+bank
09:29:21 <saggi> You can't directly access the bank
09:29:34 <saggi> so the only way to know what bank you are referring to is the provider
09:29:39 <zengchen> saggi:IMO, from the user's perspective, they will query the checkpoints they create. at present, if they do so, they should query each provider one by one, which sounds not very reasonable.
09:29:48 <leon_wang> saggi: we don't have to access the bank
09:30:08 <yuval> zengchen: that is a must
09:30:44 <zengchen> yuval:why? that's too complex.
09:31:10 <saggi> If they don't query one by one Karbor will have to do it. This might be problematic since one bank might be unresponsive and that means that requests will fail when the information the user needs might be there.
09:31:16 <yinwei_lab> our checkpoints name space is divided by provider by design
09:31:18 <zhonghua> zengchen: how to index the checkpoints? by tenant?
09:31:28 <leon_wang> saggi:we can add a table, when user delete a checkpoint first it will go through the table to find provider_id
09:31:45 <saggi> We can't user a database since it will only work for a single site
09:31:52 <saggi> s/user/use
09:31:53 <yuval> leon_wang: checkpoint already includes provider_id in it
09:32:27 <leon_wang> yuval:where? bank?
09:32:36 <yuval> yes, in the checkpoint metadata
09:33:01 <zengchen> zhonghua:would be better by user.
09:34:04 <leon_wang> yuval:i know what you mean, but the database table just save provider_id because API don't contain provider_id
09:34:26 <saggi> The api contains provider id it's part of the URI
09:34:41 <yuval> leon_wang: API contains provider_id. whether it is in the URL by the current API, or in the body as you suggest
09:35:04 <leon_wang> yuval:yeah ,in the body
09:35:51 <leon_wang> saggi: as long as the body contains provider_id, we can solve the problem about url.
09:36:12 <saggi> leon_wang: You can't force the API user to add a body to the request. This is not how REST works.
09:36:23 <saggi> You don't put a body on GET requests
09:36:45 <saggi> s/can't/shouldn't
09:36:53 <leon_wang> saggi:they just need the body when they create
09:36:57 <chenying_> You don't put a body on GET requests  +1
09:37:07 <yuval> chenying_: yes, +1
09:37:28 <leon_wang> saggi:other they don't need anything but checkpoint_id.
09:37:30 <saggi> No, since /api/v1/checkpoints/123 will not work without use knowing in the request what provider id to use
09:37:43 <saggi> We will not look at all the providers
09:38:05 <saggi> And even if we do the ID is not unique
09:38:10 <saggi> across providers
09:38:21 <saggi> So we can't use it as an ID
09:38:24 <leon_wang> saggi:when we create a checkpoint, we can save provider_id to the database besides the bank
09:38:50 <saggi> leon_wang: We can't use a database since it's not synced across sites
09:39:00 <zengchen> leon_wang:if you just want to move the provider id to the requst body, i can not see any benifit.
09:39:08 <leon_wang> then other operations, it will at first get the provider_id.
09:39:43 <leon_wang> zengchen:no,that's not my point
09:40:04 <leon_wang> saggi: what do you mean?
09:40:28 <leon_wang> saggi: synced across sites?
09:40:47 <zengchen> leon_wang:sorry, if i misunderstand you.
09:40:47 <chenying_> leon_wang: checkpoint metadata/data will be used in cross-restoration. So if the checkpoint api depend on the local database, I think it is not a good idea.
09:41:01 <chenying_> cross-site-restoration
09:41:15 <zhonghua> chenying_:+1
09:41:27 <zhonghua> what I am thinking about is the cross-site restoration senario.
09:41:33 <saggi> leon_wang: I think we discussed this enough. I'll put a summary after the meeting on the blueprint and we can continue there.
09:41:45 <saggi> We still have more topics than time
09:41:47 <saggi> OK
09:41:49 <saggi> ?
09:41:50 <leon_wang> saggi: ok,thanks
09:42:18 <saggi> #topic Enable ConsistencyGroup and full vm protection (snapshot/backup) through Karbor (yinwei)
09:42:25 <saggi> yinwei_lab: is there a BP?
09:42:31 <yinwei_lab> not yet
09:43:22 <yinwei_lab> talked this with ying, and I'm thinking we need enable this capability in our sample vm/volume plugins
09:43:36 <yinwei_lab> what do you guys think about?
09:43:58 <yinwei_lab> if it's agreed, I will go to draft the bp
09:44:30 <saggi> yinwei_lab: Maybe for O cycle. We are still struggling with regular VM backup
09:44:36 <saggi> But put the BP up
09:44:44 <yinwei_lab> thanks!
09:44:47 <saggi> We need to start having concrete things before bcn
09:45:01 <saggi> Too bad most of you guys won't make it
09:45:17 <yinwei_lab> we will come for a bp
09:45:18 <zhonghua> yinwei_lab: agree
09:45:28 <yinwei_lab> if the bp is agreed, we will go to implement it
09:45:31 <yuval> yinwei_lab: what do you mean by 'full vm protection'?
09:45:32 <yinwei_lab> :)
09:45:32 <zhonghua> saggi:+1
09:45:45 <saggi> #topic Enable replicate protection plugin(yinwei)
09:45:47 <yuval> yinwei_lab: nvm, let's speak afterwads
09:46:08 <yinwei_lab> same status as above
09:46:09 <saggi> I think this is the same as the previous topic
09:46:12 <saggi> Sure
09:46:22 <yinwei_lab> but there's a problem for replicate
09:46:31 <saggi> #topic Add a dict type parameter for Protectable Instances API (chenying)
09:46:52 <yinwei_lab> how to catch a checkpoint for replication?
09:47:19 <saggi> chenying ...
09:47:19 <chenying_> I have expain it why I need add parameter for this api in the wiki page.
09:47:31 <saggi> For the public API?
09:47:44 <chenying_> yes
09:48:36 <saggi> It seems like a good suggestion but what I'm missing is how it all fits in the user-story
09:48:44 <saggi> Do we use it during plan building?
09:48:49 <chenying_> one scenario is cross-region-query-instance.
09:48:53 <yuval> chenying_: are the only 2 use cases right now are region and vendor auth?
09:48:59 <chenying_> yes
09:49:05 <chenying_> yuval:yes
09:50:26 <chenying_> I will submit a bp about it. What's your oppions about it.
09:50:58 <yuval> chenying_: I belive there is a room for it, but a user will have to know what parameters to pass
09:51:41 <saggi> I also have trouble seeing how dashboard integration would work
09:51:43 <chenying_> cross-region-query-instanc may also consider how to protect the instance in different region.
09:53:26 <chenying_> saggi: we may need define the certain key of the parameter.
09:53:39 <chenying_> saggi: I will discuss this with xinyong.
09:53:43 <saggi> chenying, it's a good idea but we need more specifics. I think a BP is in order and make sure xiangxinyong also signs off on it.
09:53:57 <xiangxinyong> saggi, chenying: ok
09:54:09 <xiangxinyong> we will discuss the bp together
09:54:32 <chenying_> Ok I will submit a bp later.
09:54:49 <saggi> chenying thanks.
09:55:13 <saggi> #topic open discussion
09:55:19 <saggi> We have only 5 minutes
09:55:29 <yuval> well
09:55:29 <saggi> So any last words?
09:55:30 <leon_wang> saggi:sorry ,my bad.
09:55:33 <yinwei_lab> zhonghua, you guys won't go to bcn?
09:55:34 <saggi> leon_wang: np
09:55:45 <zhonghua> yinwei_lab:not sure
09:55:57 <yuval> leon_wang: good to see you on the irc meetings
09:56:07 <zhonghua> yinwei_lab:how about you?
09:56:14 <leon_wang> saggi: I will modify further, we can talk about it later, ok?
09:56:23 <saggi> leon_wang: Sure, np
09:56:38 <yinwei_lab> zhonghua: not sure, I still suffers with my passport
09:56:39 <yuval> I just want to say thanks for zhangshuai and xiangxinyong, they are doing many reviews
09:56:53 <xiangxinyong> thanks yuval
09:56:55 <leon_wang> saggi:i also have a question about restore api
09:57:03 <saggi> leon_wang: shoot
09:57:22 <leon_wang> why it have delete in client but not in api?
09:57:27 <zhangshuai> thanks for yuval
09:57:38 <yuval> and zhangshuai did a great work on docs and api
09:57:55 <saggi> leon_wang: I don't understand the question
09:57:58 <leon_wang> yuval:+1
09:58:06 <chenying_> zhangshuai: good job!
09:58:20 <zhonghua> zhangshuai xiangxinyong: thanks
09:58:24 <leon_wang> saggi: i will submit a patch later.
09:58:30 <zhangshuai> thanks
09:58:49 <saggi> Is that all?
09:58:57 <leon_wang> yup
09:59:42 <saggi> #endmeeting