14:30:59 <aglitke> #startmeeting
14:30:59 <aglitke> #meetingname scrum
14:30:59 <hlwanghl> seems the bot hasnt joined
14:30:59 <aglitke> #info Agenda: 1) Roundtable / Open Discussion
14:30:59 <hlwanghl left the room (quit> Remote host closed the connection).
14:30:59 <aglitke> Other topics?
14:30:59 <aglitke> (the bot is out sick)
14:30:59 <AdamKingIT> Chicken soup?
14:30:59 <royce> I hope to be out sick too
14:30:59 <zhoumeina> haha,
14:30:59 <aglitke> AdamKingIT: indeed :)
14:30:59 <aglitke> Ok no other topics...
14:30:59 <aglitke> #topic Roundtable / Open Discussion
14:30:59 <aglitke> #info aglitke has been trying to clear the backlog of patches.  Making good progress.
14:30:59 <aglitke> We have two overdue issues: https://github.com/kimchi-project/kimchi/issues?milestone=2&state=open
14:30:59 <aglitke> ahh, one
14:30:59 <alinefm> #info alinefm Sent patch to fix bug https://github.com/kimchi-project/kimchi/issues/74 (remove vm from local database only if it added from Kimchi UI)
14:30:59 <aglitke> shaohef: https://github.com/kimchi-project/kimchi/issues/24 <-- any progress?
14:30:59 <alinefm> #info alinefm Sent patch to fix bug https://github.com/kimchi-project/kimchi/issues/71 (keep image ratio)
14:30:59 <bing_bu> #info bingbu sent RFD v2 of adding ISCSI and NFS StoragePool and review several patches
14:30:59 <alinefm> #info alinefm Get patches to disable 'create' button in create vm window merged
14:30:59 <alinefm> #info alinefm Working on clone feature
14:30:59 <alinefm> aglitke, do I need to open bugs for it ^?
14:30:59 <hlwanghl left the room (quit> Remote host closed the connection).
14:30:59 <aglitke> alinefm: Actually that would help if you would open an enhancement or two
14:30:59 <royce> #info royce is doing shallow scan patches, settelled down with design, submitted v2, exception series merged, thanks aglitke, shaohef,bing_bu for your review
14:30:59 <AdamKingIT> alinefm: For issue 74, did you prevent the VM from being deleted, or avoid the error report even though the delete was successful?
14:30:59 <alinefm> AdamKingIT, the vm was already been deleted from libvirt and it failed when deleting it from local database (objstore)
14:30:59 <shaohef> aglitke: sorry,  have not check it on F19  these days.
14:30:59 <royce> alinefm, by clone feature, do you mean clone vm using the same backing file?
14:30:59 <AdamKingIT> alinefm: ok, so you just fixed/avoided the error report for the local database delete?
14:30:59 <alinefm> I added a parameter to ignore (does not display error) when the vm is being deleted and it is not on local database
14:30:59 <AdamKingIT> cool
14:30:59 <alinefm> royce, from first discussion with aglitke we decided to create a template from a vm (creating a qemu base image) and then allow create a vm from the template
14:30:59 <aglitke> alinefm: one thing we should look at is enumerating the storage volumes used by a vm when deleting.  We should parse the domain xml so we can properly handle vms created outside of kimchi
14:30:59 <AdamKingIT> #info I posted a presentation to cattail that I will be using today with some customers, and in the future. Comments welcome
14:30:59 <alinefm> aglitke, it is already working
14:30:59 <aglitke> How long until we think we can have iso scanning in the UI using the shallow method>
14:30:59 <aglitke> alinefm: merged?
14:30:59 <alinefm> aglitke, yes! at least it worked in my tests
14:30:59 <aglitke> ok, good
14:30:59 <alinefm> the only problem while deleting vm's added outside kimchi was related to the local database
14:30:59 <zhoumeina> alinefm: you can send patch, and I will test it
14:30:59 <AdamKingIT> re: shallow scan. Let me talk to DingXin. He had scan UI code working based on the old design. I suspect it won't take him a long time though
14:30:59 <aglitke> excellent.
14:30:59 <aglitke> AdamKingIT: That's great!  He can use royce's patches
14:30:59 <aglitke> until they are merged
14:30:59 <alinefm> zhoumeina, for what?
14:30:59 <zhoumeina> alinefm: #74
14:30:59 <alinefm> zhoumeina, it is already merged =)
14:30:59 <royce> OK, I'll corporate with xinding on the scan UI
14:30:59 <zhoumeina> alinefm: ok, great
14:30:59 <xinding> The shallow method has been merged?
14:30:59 <bing_bu> alinefm: The volume used by VM created outside of kimchi maybe can not accessed(removed) because of permission, maybe.
14:30:59 <aglitke> xinding: It is close, but not merged yet.
14:30:59 <alinefm> bing_bu, it worked well for me. I used virt-manager to add a vm and delete it from kimchi UI
14:30:59 <zhoumeina> AdamKingIT: we have to redesign the ui of iso scan?
14:30:59 <xinding> I'll work on it from tommorow
14:30:59 <aglitke> I do think the UI should pop up a confirmation dialog when deleting a VM
14:30:59 <aglitke> AdamKingIT: ^
14:30:59 <aglitke> We are deleting disks permanently and it's easy mis-click
14:30:59 <zhoumeina> aglitke: yes ,it is needed
14:30:59 <aglitke> especially on a tablet with my fat fingers.
14:30:59 <AdamKingIT> I don't THINK much if any redesign is required, but we'll find out
14:30:59 <bing_bu> alinefm: maybe you can try to create a VM using virsh under root, I am not sure about that.
14:30:59 <AdamKingIT> aglitke: I bet you wear your seatbelt too ;-)
14:30:59 <aglitke> heh
14:30:59 <zhoumeina> AdamKingIT: I think we need a shallow scan button , deep scan button, can stop scan button, at least
14:30:59 <AdamKingIT> I agree, its pretty bad if you misclick. I will open a bug report
14:30:59 <aglitke> zhoumeina: I assigned you https://github.com/kimchi-project/kimchi/issues/85
14:30:59 <bing_bu> aglitke: maybe the UI should tip the user whether to delete the using image or images ?
14:30:59 <aglitke> feel free to reassign as needed.
14:30:59 <aglitke> bing_bu: If they don't delete them then we have orphaned files with no way to delete them.
14:30:59 <zhoumeina> AdamKingIT: the path of iso file is no needed to keep,
14:30:59 <aglitke> AdamKingIT: I just opened one
14:30:59 <bing_bu> aglitke: sometimes the user just want to remove the vm from list but do not want remove the data.
14:30:59 <zhoumeina> AdamKingIT: a grid poped or  something else instead
14:30:59 <aglitke> bing_bu: we cannot support that until we have volume management interfaces.
14:30:59 <zhoumeina> aglitke: ok, I will work on it
14:30:59 <bing_bu> aglitke: You mean creating a vm from an existing image file will not supported by kimchi.
14:30:59 <aglitke> not at the moment.
14:30:59 <aglitke> We are focusing on the common features first
14:30:59 <shaohef> bing_bu: why we can not create a VM from an existing image file?
14:30:59 <aglitke> We want to do really well on the tasks a user will first want to accomplish
14:30:59 <zhoumeina> aglitke: I dont understand, I thought the user want to create a VM via iso images, not right?
14:30:59 <bing_bu> shaohef: create lot of same VMs easily
14:30:59 <aglitke> zhoumeina: exactly
14:30:59 <shaohef> bing_bu: yes. so why can not create?
14:30:59 <aglitke> bing_bu is asking for a feature to create a vm from some existing disk image.
14:30:59 <aglitke> I am saying that is not a common feature and is low priority.
14:30:59 <zhoumeina> aglitke: oh
14:30:59 <AdamKingIT> I do think its worth "Create VM from existing VM" - aka Clone, thuogh that is simpler than "Create from Disk Image"
14:30:59 <royce> alinefm,  clone in kimchi we generate different volumes for cloned vm, seems not the usual way we do in other virtual management...
14:30:59 <aglitke> AdamKingIT: The way we are approaching that one is allowing any VM to be converted into a template
14:30:59 <aglitke> and then you use the normal flow for create vm to create clones from that template.
14:30:59 <AdamKingIT> WOuld that just create a template like what was used for the original VM?
14:30:59 <aglitke> so cloning a vm is just creating a vm from a template with a common disk defined.
14:30:59 <AdamKingIT> Meaning you would lose any 'live' changes
14:30:59 <aglitke> No
14:30:59 <aglitke> !
14:30:59 <AdamKingIT> good!
14:30:59 <aglitke> We lock the VM and copy the disk to a new file for the template and make that file readonly.
14:30:59 <bing_bu> I do think clone is more simple than create a new guest OS by install it from ISO.
14:30:59 <aglitke> then we use qemu-img to create a new leaf image to reassign to the original vm
14:30:59 <AdamKingIT> Handy too
14:30:59 <alinefm> royce, we will have the same content in 2 disk images
14:30:59 <royce> normally we use the same volume and make them depend on the same backing file
14:30:59 <aglitke> then new vms can be created by creating leaf images from that base.
14:30:59 <shaohef> bing_bu: I think we should make a VM temple from an exist vms.
14:30:59 <aglitke> We will require the VM to be powered off during this process.
14:30:59 <shaohef> aglitke: yes, agree.
14:30:59 <bing_bu> shaohef: same
14:30:59 <shaohef> bing_bu: so we do not need to install a VM again. It will take a long time.
14:30:59 <bing_bu> aglitke: maybe we can called this as "creating a VM based on existing image" = copy the image file,rename it to the new name,create template,define.
14:30:59 <aglitke> shaohef: if you can take a look at that default network and default pool bug we will be done with the July Sprint items
14:30:59 <aglitke> Are there any other topics that people would like to bring up?
14:30:59 <shaohef> aglitke: OK. I will do it.
14:30:59 <AdamKingIT> Reflections... Thanks for the good ideas. Keep them coming, we'll discuss at next week's scrum
14:30:59 <bing_bu> About storagepool, do we still make lots of check before creating a 'default' storagepool  or just create a 'default' pool if no pool?
14:30:59 <aglitke> bing_bu: I think some distros have separated the creation of the default net and default pool into another package.
14:30:59 <aglitke> So we just need to figure out which one it is.
14:30:59 <shaohef> aglitke: cacheBust. I want to generate the html.tmpl form html.tmpl.in
14:30:59 <aglitke> shaohef: yes
14:30:59 <aglitke> add <file>.html.tmpl into the list of output files in configure.ac
14:30:59 <aglitke> then you need to have a html.tmpl.in file
14:30:59 <aglitke> autoconf will replace @VAR@ with VAR
14:30:59 <shaohef> aglitke: yes.
14:30:59 <aglitke> but actually that may not be what we want
14:30:59 <aglitke> because the value needs to change when files change.  That is automake, not autoconf
14:30:59 <shaohef> aglitke: do we need a Makefile.subs?
14:30:59 <aglitke> I don't know...
14:30:59 <aglitke> I don't think so.
14:30:59 <aglitke> You will probably use the Makefile do_substitution trick like we do for several other files.
14:30:59 <bing_bu> aglitke: As I know, virt-install and virt-manager can do that
14:30:59 <shaohef> aglitke:  yes.
14:30:59 <bing_bu> aglitke: virt-manager just create default if no pool, do not create any other pool out of '/var/lib/libvirt/images'
14:30:59 <aglitke> bing_bu: yes, so the best way to figure it out is to find the package dependencies of virt-manager and see which package contains the /etc/libvirt/networks/default.xml file
14:30:59 <aglitke> rpm -qf /etc/libvirt/networks/default.xml
14:30:59 <aglitke> shaohef: ^
14:30:59 <aglitke> I think storage pools have a similar xml file.
14:30:59 <shaohef> aglitke: yes.
14:30:59 <aglitke> then we will require that rpm in the spec file for the appropriate distro
14:30:59 <shaohef> aglitke: I will look into it.
14:30:59 <aglitke> great'
14:30:59 <aglitke> is F19 the only distro affected by this?
14:30:59 <shaohef> aglitke: to check whether a similar xml file for storage pool
14:30:59 <bing_bu> aglitke: yeah, you are right
14:30:59 <shaohef> aglitke: just test F19 distro
14:30:59 <aglitke> ok.  Mom is also affected... I need to change my package dependencies for that package too
14:30:59 <alinefm> aglitke, there is a similar problem to it when the pool and network exists but they are not active
14:30:59 <alinefm> it happened sometimes to me
14:30:59 <alinefm> and I needed to active it manually to get kimchi works properly
14:30:59 <aglitke> alinefm: ok, that is easier... We can pretty safely enable those.
14:30:59 <aglitke> at daemon startup
14:30:59 <shaohef> alinefm: I think we can active it
14:30:59 <aglitke> that is just a libvirt API call
14:30:59 <alinefm> aglitke, shaohef, yeap
14:30:59 <aglitke> we can do it in the Model constructor.
14:30:59 <alinefm> but if it failed?
14:30:59 <aglitke> If it fails then kimchi should report an error and exit.
14:30:59 <aglitke> or maybe just display an error page to the user.
14:30:59 <alinefm> right! I will send a patch for it
14:30:59 <aglitke> alinefm: thanks!
14:30:59 <alinefm> aglitke, I was thinking and show a error while starting up the kimchi service
14:30:59 <alinefm> instead of display a page error
14:30:59 <aglitke> alinefm: we might want to do both.
14:30:59 <aglitke> one issue is that the end user may not be looking at the server logs
14:30:59 <aglitke> they will try to open the web interface and it will be down
14:30:59 <aglitke> Would be nice if it was up but displayed a banner with more information about the error.
14:30:59 <aglitke> And the interface is disabled.
14:30:59 <aglitke> We could do this with royce's error handling
14:30:59 <aglitke> have the server always raise HTTPError(500, details)
14:30:59 <aglitke> for all requests if there is a global error condition.
14:30:59 <alinefm> aglitke, yes! you are right
14:30:59 <AdamKingIT> Maybe something non-generic
14:30:59 <aglitke> Yeah.  We need a translatable user error message
14:30:59 <AdamKingIT> Trying to think if things could be partially functional in this state
14:30:59 <shaohef> AdamKingIT:  when will we integrate PAM for authentication?
14:30:59 <aglitke> Kimchi could not activate the libvirt 'default' network which is needed for proper network connectivity of virtual machines.
14:30:59 <AdamKingIT> What if the virtual machines had no network defined? (I know we don';t allow this now, but its not incobceivable
14:30:59 <aglitke> I think we still want some basic sanity in the system
14:30:59 <aglitke> We have some basic ground rules:
14:30:59 <aglitke> default network available
14:30:59 <AdamKingIT> sanity good. One the one hand I like that the server won't even start if the world doesn't make sense
14:30:59 <aglitke> default storage pool available
14:30:59 <AdamKingIT> Its simple, clean
14:30:59 <aglitke> Yeah, but I worry that a user won't get feedback
14:30:59 <AdamKingIT> On the other, of there are no current VMs making use of the default network or storage pool, why shouldn't I be able to work?
14:30:59 <aglitke> I'd actually like to allow the debugreports feature to still work from this error page.
14:30:59 <aglitke> so we display an error and then have a button to collect a Debug report package.
14:30:59 <AdamKingIT> I need to get more familiar w/ the debugreports
14:30:59 <aglitke> then the user is empowered to do something about the error instead of just getting a server not found error.
14:30:59 <aglitke> AdamKingIT: It just calls 'sosreport' under the covers and will allow the user to download a collected tar.gz file that they can forward to support.
14:30:59 <AdamKingIT> yeah, so the next smallest step on the continuum is allow the server to start, but the users all get an error page saying to call aglitke and have him fix his server
14:30:59 <aglitke> heh
14:30:59 <aglitke> yep
14:30:59 <alinefm> hehehe
14:30:59 <aglitke> AdamKingIT: Did you have a chance to play with Auth yet?
14:30:59 <AdamKingIT> I haven't. Was out of town this weekend, and didn't have time during the week...
14:30:59 <AdamKingIT> My thought is to break it into small enough pieces that we can all get on the same page, then break out the impl of the parts
14:30:59 <aglitke> yep.  for starters the two I see are:
14:30:59 <aglitke> HTTP challenge
14:30:59 <aglitke> backend PAM auth engine
14:30:59 <aglitke> the PAM part can initially be :
14:30:59 <aglitke> return True
14:30:59 <aglitke> that will allow us to get the UI and REST API working
14:30:59 <AdamKingIT> I had it at:
14:30:59 <AdamKingIT> Create a login form that"validates" the user and issues the magic cookie (where uid/pwd is hard coded to start. or always passes the check)
14:30:59 <shaohef> HTTP challenge -> HTTP respons -> backend PAM auth engine
14:30:59 <aglitke> then we can make the PAM part a little more difficult to pass.
14:30:59 <AdamKingIT> Then put protection on some URLs to send to the auth form if the user doesn't have a valid token
14:30:59 <AdamKingIT> If that works ok, we can add the constraint to the URLs
14:30:59 <aglitke> I want a quick and dirty impl of the HTTP Form and redirection stuff so I can see how it works with the REST API
14:30:59 <AdamKingIT> implement actual PAM auth
14:30:59 <AdamKingIT> and work on generating a secure token
14:30:59 <aglitke> AdamKingIT: You want to take point on the initial bits?
14:30:59 <AdamKingIT> y I think I still have pt on the initial bits,
14:30:59 <aglitke> ok.  top o' the hour. Thanks for joining everyone!
14:30:59 <aglitke> #endmeeting