13:00:18 #startmeeting 13:00:18 Meeting started Wed Sep 4 13:00:18 2013 UTC. The chair is aglitke. Information about MeetBot at http://wiki.debian.org/MeetBot. 13:00:18 Useful Commands: #action #agreed #help #info #idea #link #topic. 13:00:24 #meetingname scrum 13:00:24 The meeting name has been set to 'scrum' 13:00:38 #info Agenda 13:01:03 #info Feature rundown for Sept release 13:01:20 Anything else? 13:01:30 hi royce xinding zhoumeina 13:01:33 hi hlwanghl 13:01:38 hi aglitke 13:01:42 hi adam! 13:01:43 good morning 13:01:47 hi ming :) 13:01:51 :) 13:01:53 hi 13:01:57 Any other topic besides feature rundown? 13:02:23 looks good for me, seem we have new fellow, apporc 13:02:27 rundown means freezing. 13:02:28 I really want to focus on nailing down what is required to get the outstanding features merged soon 13:02:34 ? 13:02:42 yeah, hi 13:02:49 means getting the last important features in. 13:03:05 approc, could you introduce yourself first? 13:03:07 apporc: Welcome 13:03:48 apporc: welcom 13:03:52 hi all 13:04:01 hi people! =) 13:04:03 aglitke, we have ISO scanning and authentication on going now. I think these two are in the top priority list 13:04:12 missed you last week 13:04:19 yeah let's open the topic up... 13:04:25 #topic eature rundown for Sept release 13:04:32 #topic Feature rundown for Sept release 13:04:39 vm edit ready or not? 13:04:44 These are the ones I am aware of: 13:04:45 https://github.com/kimchi-project/kimchi/wiki/Todo-September-Base 13:05:02 These are the most complex ones that need the most attention: 13:05:07 1) ISO Scanning 13:05:11 2) ISO Streaming 13:05:18 3) Authentication 13:05:26 I would like to start with these. 13:05:55 I think we should try to break these up to get small pieces merged. 13:06:02 1) ISO Scanning 13:06:15 royce: Can you summarize where we stand? 13:06:38 depend on multi-fix for shallow, depends on refresh and iso generator for deep scan 13:06:51 shallow's ready I would say 13:06:52 just another programmer, love open source ,linux. btw, iam using an android. it is too slow to type . please take easy to discuss,and i will just listen. 13:07:13 deep scan's rfc I'll say 13:08:10 royce: Can you give me the patch subjects for the dependencies? 13:08:20 I am going to add them to the wiki 13:08:21 royce about the storage pool refersh, we need to split Bingbu's patch 13:08:39 Of course aglitke, one sec 13:09:19 Are the refresh and iso generator patches ready? Have they been reviewed? 13:09:34 Is there a UI piece? 13:09:34 shallow:[project-kimchi][PATCHv3 0/4] Misc bug fix for scan preparation 13:09:42 royce, based on the discussion we had, there will be no stand-alone refresh API, just list 13:10:01 right, ming 13:10:06 ming: agree 13:10:13 Sorry, connection lost just now 13:10:32 xingding, could you pleas direct us to the UI patch u sent? 13:10:35 ming: So bingbu's refresh series will need to be reposted? 13:10:53 aglitek: the patch include other features. 13:10:58 I sent out a patch about shallow scan 13:11:05 agiltke: i will split out it. 13:11:12 xinding: Can you find the patch subject? 13:11:17 aglitke, iso generator's ready I think 13:11:17 ming: ok, thanks. 13:11:22 [PATCH] Create templates by shallow scan 13:11:27 royce: So far I have: 13:11:32 [PATCHv3 0/4] Misc bug fix for scan preparation 13:11:41 Which other series are needed? 13:11:47 deep: Add pseudo iso generator 13:11:55 I will focus my energy on those 13:12:00 deep : Update storagepool: 13:12:00 add refresh action,get vol numbers and available space of a pool 13:12:23 deep is RFC right? So iso gen is not needed for shallow 13:12:29 but the refresh one is not ready according to our discussion, need rebase 13:12:35 right, aglitke 13:12:55 What is the subject for the Shallow scan series? 13:13:06 Then all I need is the UI patch 13:13:21 [project-kimchi][PATCHv10 0/7] shallow scan support 13:13:26 royce, no refresh API, just make sure list will refresh the list automatically. 13:13:44 true, ming 13:14:13 let me check xingding's UI patch name 13:14:18 royce, are you requesting to merge deep ISO scan also? 13:14:27 There is only one UI patch, [PATCH] Create templates by shallow scan 13:14:46 ok, great. 13:14:46 It depends several backend patches 13:14:54 aglitke:[project-kimchi] [PATCH] Create templates by shallow scan 13:15:30 I am going to put deep scan on a somewhat lower priority while we get shallow working. 13:16:03 aglitke, deep scanning patchs are there. 13:16:07 I would ask the team to please focus review and testing efforts on the specific patch series we identify in this discussion. 13:16:25 ming: royce has said they are still in RFC condition. 13:16:47 I want to reduce the backlog of outstanding patches and that means taking what is ready first. 13:16:48 aglitke: NP 13:16:56 2) ISO Streaming 13:17:03 From my understanding we need: 13:17:13 aglitke, it is tested, but I'm not sure you guys like the design, but since your effort is limited I can wait until proper time 13:17:19 * Capabilities detection 13:17:32 s/effort/time 13:17:47 * File-based template storage 13:18:26 * API to list known iso templates 13:18:56 * UI to create a template from a known network iso 13:19:18 * UI to create a template from a user provided URL 13:19:44 this last one already exist 13:19:45 aglitke:File-based template storage? 13:19:50 * Backend code to generate the proper domain xml for streamed isos 13:20:01 aglitke, For file based template storage, is that one change from object store to file? 13:20:14 yes, but that needs more discussion here. 13:20:22 right, aglitke 13:20:57 I think there is a difference between templates and known iso links 13:21:08 even though both have the same json format 13:21:35 Templates are user created and can be deleted 13:22:04 they can also be installed by an external package into /etc/kimchi/templates/ 13:22:44 what the user can do with known iso links? 13:22:54 Templates are accessed by /templates/* URI 13:22:59 creating VM by iso links directly? 13:23:04 for iso links: 13:23:24 They are supplied by the kimchi package or an add-on package only. 13:23:32 so with installable templates we still expose iso links? 13:23:37 Then cannot be added by the API or deleted. 13:24:04 They might be located at: /etc/kimchi/distros 13:24:22 they can be accessed by the URI: /config/distros 13:24:33 they can only be listed 13:24:52 and update? aglitke 13:24:55 to create a template from a known distro the ui would fetch the appropriate distro 13:25:21 and use the json to construct a template json object to post to /templates 13:25:28 no updates to distros via the api 13:25:46 it is static application configuration 13:25:52 isos are pre-installed before Kimchi by admin? 13:26:00 can be edited by an external package or by the administrator. 13:26:09 ming: Just the iso information 13:26:22 what if we want to use a local mirror iso link? I assume we need to change the default official one? 13:26:25 like links to the remote file, icon, and recommended vm settings. 13:26:36 aglitke, so we need tools to create iso information. 13:26:44 we would drop a new file into /etc/kimchi/distros 13:27:07 ming: These would not be commonly edited by end users. 13:27:16 the iso link wil be what? a xm file with the information or only the iso file itself/ 13:27:17 ? 13:27:39 in /etc/kimchi/distros would be a series of .json files 13:27:49 aglitke, I think even administrator need a handy tool to change those distro informations. 13:28:00 the format is a list of json objects: 13:28:02 [ 13:28:53 { 'name': 'Fedora 19', 'os_distro': 'fedora', 'os_version': '19', 'cdrom': 'http://...', ... }, 13:28:54 ] 13:29:13 Notice the format of the json object matches the format of a VM Template. 13:29:42 to make a template from a distro, the UI just echos the object into a new json object and substitutes 'name' with the desired template name. 13:29:46 right! so the ui will be able to list those iso links and then the user can select one to create a template from? 13:29:49 OK, read only iso info does not need to care about locks, but template file need, I think we need to tackle the issue of transaction write and r/w serialization of file 13:29:58 alinefm: yes 13:29:59 or the user will be able to create a vm from the iso link directly? 13:30:34 alinefm: If the user specifies a link by themselves, they also need to select a distro and version (or unknown) 13:31:12 But that would be to create a template from a link directly. I don;t think we are contemplating creating VMs through any path other than template 13:31:15 xingding, AdamKingIT so the UI will still needed for this one for creating template 13:31:30 royce: I responded to your question on the list... The ObjectStore already uses a session / transaction lock that is global to the objectstore. 13:31:48 aglitke: the cdrom can be several links? for http://iso.us.com http://iso.cn.com ftp:// ? 13:31:49 royce, are you talking abot the administrator can change the template with writing operations? 13:31:58 AdamKingIT: Right, create template from link. then create vm from template. 13:32:15 shaohef: For now it is one link. 13:32:22 ming, yes 13:32:59 royce: class ObjectStoreSession(object): 13:33:26 aglitke, let me take a look... 13:33:30 This gives you safe, exclusive access to the ObjectStore. 13:33:42 royce: Got it. 13:33:51 The UI for this as a baseline will need to cover creating a template from the avail 'known distros', where the use picks from the distros 13:34:26 After we have that, we'll eventually want to add 'create a temple from a URL' where the user has to input the URL 13:34:38 yep 13:35:06 create a temple from a URL, we already have this 13:35:33 maybe that UI could redirect right to the template edit window 13:35:42 after it is created. 13:36:06 AdamKingIT, the UI create template passing an url already exists 13:36:15 But maybe not only one templates could be created one time 13:36:24 aglitke, so one time for a r/w access from the user of objstore?acceptable, for transaction write we still want to make sure it never writes part of the file 13:37:16 If user select several isos, it's difficult to decide to redirect to which edit window 13:37:41 xinding: I only mean to do the redirect when adding an iso from a single custom URL 13:37:59 aglitke: got it 13:38:04 for the UI where the user selects known distros there is no need to redirect. 13:38:05 royce: aglitke: a tool to write the iso json file? such as the ajax shell ? 13:38:23 Maybe eventually but it's not important for September. 13:39:08 aglitke: yes. this can avoid the user to write the file directly. 13:39:20 I think that transaction can be gaurenteed by copy and update instead of write lines 13:39:30 royce: You may need to improve the locking for the FileStore class. I would suggest a threading.Semaphore per FileStore object. 13:40:04 to work with the filestore you must create a session (as with ObjectStore) and that session takes the semaphore. 13:40:05 aglitke, mark suggested each for a template too 13:40:31 then while holding the session you can safely manipulate date. 13:40:33 data. 13:40:45 I think it needs to be global per object type. 13:40:46 got it, agitke 13:41:09 otherwise you could get an inconsistent list of objects if someone else is removing one. 13:41:22 right 13:41:50 Do we have agreement on the design? 13:41:53 alinefm: ? 13:42:25 aglitke, yeap 13:42:27 let's see if UI guys agree with this?:) 13:42:35 royce: agree! 13:42:47 we need to assign people to it 13:43:01 yes, that will be the next step once everyone agrees with this plan. 13:43:03 I assume the session is cherrypy session here. 13:43:10 ming: no 13:43:23 it's like ObjectStoreSession in the current code 13:43:37 it's a python ContextManager context 13:43:37 aglitke: just for the file operation session? 13:44:13 aglitke, not sure why we need that context. 13:44:28 It's for entering a critical section 13:44:34 It is easy to maintain a global lock across differnt cherrypy sessions. 13:44:51 the context is bounded by a lock acquire and release 13:45:11 with FIleSession(...) as ctx: 13:45:17 do first op 13:45:20 do second op 13:45:26 return 13:45:44 before entering the sub-block, the lock will be taken 13:45:56 after exiting the block, the lock will be released. 13:46:13 first op and second op are guaranteed to happen sequentially. 13:46:29 without any interleaving operations to corrupt data. 13:46:30 so you protect each file with one context ? 13:46:46 aglitke, it means vm/screenshot will also use file backend after that? 13:46:48 or multiple files with one context? 13:46:56 You can either do one global one (for all types) or one per type. 13:47:06 I think one per type is ok for our API right now,. 13:47:30 means templates hold a lock and vm hold a lock 13:47:37 I don't know that we want screenshot to get more entangled with files 13:47:38 royce: I am ok with keeping ObjectStore for VM metadata 13:48:00 It does not need to be altered by external packages. 13:48:17 royce, so as to the state for the async threads. 13:48:45 s/so/the same/ 13:49:15 next item? 13:49:32 I guess the FileStore will be simpler to implement if each file can contain only a single json object (not a list as I said before) 13:49:44 It means we will have a lot of files in that dir. 13:50:01 in /etc/kimchi/distros 13:50:12 aglitke: ming: same with the sqilt3 session 13:50:31 I want to go down the list of tasks for this feature to make sure we are working on them all. 13:51:04 1) create backend to list iso links 13:51:11 the KPI feature of alinefm 13:51:12 like { 'name': 'Fedora 19'} in one file? 13:51:19 2) create UI do list iso links 13:51:24 * Capabilities detection 13:51:25 * File-based template storage 13:51:25 * API to list known iso templates 13:51:25 * UI to create a template from a known network iso 13:51:25 * UI to create a template from a user provided URL 13:51:38 oh... sorry :) 13:51:53 np! =) you have it ready 13:52:06 * Capabilities detection (alinefm) ? 13:52:16 yeap! =P 13:52:20 * File-based template storage (royce) ? 13:52:29 This is what we discussed above 13:52:33 right~ 13:52:42 * API to list known iso templates (royce)? 13:52:54 This will read the files in /etc/kinchi/distros 13:52:57 this is related to iso links? 13:53:07 I think royce is overloading... 13:53:15 * UI to create a template from a known network iso 13:53:16 * UI to create a template from a user provided URL 13:53:16 For these two, add the feature to redirect to edit window after creating 13:53:20 And will present them at the uri /config/distros 13:53:47 then what will I do? 13:53:49 maybe shaohef can help with this one if he wants:) 13:53:53 API to list known iso templates depends on the file based storage api 13:54:12 sure, you guys can break it up however it works. 13:54:24 royce: aglitke: yes. I can take one 13:54:35 thanks,shaohef~ 13:54:38 xinding: You have the UI pieces covered? 13:55:15 Can we chat a bit more about the redirect to edit after create? 13:55:17 * UI to create a template from know isos list 13:55:24 maybe shaohef can give you a MockModel implementation of /config/distros that is fake so you can test the UI part 13:55:51 aglitke: sure. 13:55:55 it is easy to mock up the backend using MockModel to enable UI testing. 13:56:18 shaohef: Cool. Then when royce is ready with the backend stuff you can implement the real model. 13:56:22 AdamKingIT: Sure. 13:56:35 aglitke: yes. 13:56:36 I think the redirect to edit should only happen for custom URLs 13:57:02 OK, aglitke I will trying not block shaohef 13:57:02 Because we have no way of knowing which distro they point to. 13:57:07 editing the URLs for correction? 13:57:18 Do we still plan to read the first few sectors of a custom URL like we do w./ local ISO? 13:57:27 royce: no problem. shaohef can add a list of fake distro entries for the MockModel 13:57:33 So we can detect distro? 13:57:39 oh! that one... 13:57:46 AdamKingIT: Maybe later. 13:58:08 You need to read 16 sectors 13:58:28 The thing w/ edit is we do not presently allow anyone to edit the distro/version of a template, nor the icon... 13:58:35 oh, ok 13:58:44 maybe we should try to get the read working then. 13:58:56 Also, we can detect if the url is valid or not, 13:59:03 So the edit would just be to edit cpu/memory (+storage pool and template when those come in) 13:59:12 I saw alinefm did change to use urlopen to validate it, maybe it can be added there 13:59:13 aglitke, my patch already does that 13:59:31 we already get the ISO generator patches 13:59:35 alinefm: Really? Awesome! 13:59:55 ming: Those aren't needed for any of this, 14:00:02 alinefm validated the url , I think read sectors can be added there 14:00:24 yes, I mean validating the url 14:00:26 aglitke, I mean we can extend that to get the 16 first sector to know the distros. 14:00:30 ok... Then we pass the raw data to the same scanning code to do the checks., 14:00:32 ming, generator is for test logic related isos 14:00:35 alinefm: read 16 sectors 14:01:34 ming: you means read the 16 first sector from the remote iso? 14:01:35 ok. So... I think iso streaming is the largest feature by far. 14:01:40 right! so we need to read 16 sectors of iso streaming and use iso_info to detect? 14:01:45 But everyone has a piece of it. 14:01:58 alinefm, you pass it to probe_is 14:02:01 agiltke, you going to update the wiki? 14:02:06 probe_iso 14:02:10 The last feature is the auth... I am making the suggested changes based on your reviews. It should be ready to merge after that. 14:02:20 AdamKingIT: Sure. 14:02:31 great... 14:02:55 We have a few more features in flight. Not everyone is coding ISO streaming, yet anyway :-D 14:03:01 I don't want to consider other patches (except for bug fixes) other than these patches we have talked about. We need to focus on these features. 14:03:15 agltike, I am enhancing some of the authentication method. 14:03:16 aglitke, the KPI one 14:03:35 royce: Who is working on that one? 14:03:49 alinefm, but I have some suggestion:) 14:04:00 ok, let's tackle it quickly. 14:04:11 I wish it could be put in single thread collected periodically 14:04:15 aglitke: Once you get through authentication you can spend more time reviewing others 14:04:29 AdamKingIT: yep 14:04:41 royce, yes! good point 14:04:46 I would suggest aglitke put more effort on patch merging. 14:04:58 #action aglitke update wiki with current feature state 14:05:17 In the future we may need jurnal or history of these data which can not depend on browser access 14:05:17 royce, I resent the patchset yesterday. did you have a chance to see it? 14:05:19 ming: I can only merge when patches are ready 14:05:27 quality first, then merge 14:05:29 Thanks alinefm:) Haven't yet 14:05:44 AdamKingIT: is there any license issue of introducing jquery UI to Kimchi? 14:05:53 I'll review tomorrow, alinefm 14:06:05 YuXin: I do not think so. Just include it into ui/lib 14:06:20 ok 14:06:21 royce, I've just recorded the max rate value to fill the circle properly 14:06:22 If it's the same license as jQuery itself then we should be ok. 14:06:24 I don't think so either, but I forgot to discuss w/ Frank when we talked yesterday 14:06:37 maybe UI guys would like to change how this data is shown 14:07:33 royce: It's a good idea... We don't want to collect stats for each connected client. 14:07:33 I am sure we will love it. :-) I'll check it our this afternoon 14:07:45 out 14:07:54 alinefm, about the max rate. Can we make the max rate dynamatically? 14:08:35 alinefm, you don't have exact the max rate of a network device. 14:08:47 ming, I did it 14:09:00 then, what is that? 14:09:01 ming, I check the max rate in each request and update it 14:09:02 I am not sure we want to calculate a max rate at all. It will be misleading. I think we should just display the actual value. 14:09:27 aglitke, the max rate is only to fill the circle 14:09:28 otherwise 1kb/s might be 100% if that's as high as it's ever been 14:09:38 and the center the actual value is displayed 14:09:44 oh, ok 14:09:46 alinefm, I will read it. 14:09:51 Maybe that is ok then. 14:10:09 ok... We have run 10 minutes over time. 14:10:18 Any last quick items before we end? 14:10:20 for example: if the max rate is 250 and the current rate is 100, the portion of circle filled will be 100/250 14:10:20 that is lovely, center actual value idea:) 14:10:34 but in the center the value will be 100KB.s 14:10:42 alinefm: good 14:10:48 But how you know the max rate? 14:10:59 Is it static? 14:11:01 ming: stored in the model? 14:11:03 ming, update on every request 14:11:10 update in each request 14:11:41 K, let's talk off line. 14:12:07 ok, thanks everyone for joining! Let's close out these features and have a great Sept release! 14:12:09 #endmeeting