13:01:44 <aglitke> #startmeeting
13:01:44 <kimchi-bot> Meeting started Wed Jul 17 13:01:44 2013 UTC.  The chair is aglitke. Information about MeetBot at http://wiki.debian.org/MeetBot.
13:01:44 <kimchi-bot> Useful Commands: #action #agreed #help #info #idea #link #topic.
13:01:50 <zhoumeina> Hi all
13:01:54 <aglitke> #meetingname scrum
13:01:54 <kimchi-bot> The meeting name has been set to 'scrum'
13:02:13 <hlwanghl> Not kimchi-scrum?
13:02:50 <shaohef> hlwanghl: :)
13:02:51 <aglitke> #info Agenda: * Build process * Open issues * ISO Scanning * Round table
13:02:59 <aglitke> Who has other topics?
13:03:17 <shaohef> template update?
13:03:24 <sming> #info customer trip
13:03:25 <hlwanghl> +1
13:03:34 <aglitke> hlwanghl: The only meetings held in #kimchi are for kimchi, so that would be redundant in the meeting name.
13:03:45 <hlwanghl> aglitke: OK :-)
13:03:50 <shaohef> #info  template update
13:03:55 <aglitke> ok
13:04:02 <aglitke> AdamKingIT: Anything from your end?
13:04:30 <hlwanghl> Mobile support
13:04:31 <royce> Maybe IE support should be covered?
13:04:40 <shaohef> #info i18n  for  customer trip
13:04:40 <zhoumeina> where is AdamKingIT?
13:05:08 <AdamKingIT> sorry, on the other mtg I usually have at this hour. ill be more engaged when I get done
13:05:24 <aglitke> AdamKingIT: Any other topics to add from you?
13:05:37 <aglitke> we can add them at the end of the agenda
13:06:15 <aglitke> Ok.  let's get started.
13:06:17 <shaohef> #info cache? AdamKingIT
13:06:33 <aglitke> #topic Open Issues
13:07:06 <aglitke> Thanks to everyone for your hard work on bugs.  It's really making a positive impact.
13:07:15 <alinefm> aglitke, you can close this one: https://github.com/kimchi-project/kimchi/issues/28
13:07:15 <zhoumeina> #info I have 5 issues ,3 of them send patchs ,2 left.
13:07:19 <alinefm> it is already fixed and merged
13:07:22 <aglitke> Also, I appreciate you filing new issues as you discover them.
13:07:34 <aglitke> alinefm: thanks.
13:07:42 <aglitke> I was going to ask about which can be closed.
13:08:02 <aglitke> Right now only maintainers can close issues but I am working on a way to resolve that.
13:08:32 <zhoumeina> aglitke: yes ,I think it will be better
13:08:50 <royce> We can have a fake maintainer with close issue rights only:)
13:08:53 <aglitke> Feel free to contact me by email directly later if you have issues for me to close.
13:09:11 <aglitke> royce: The permissions are not that granular
13:09:22 <aglitke> You can basically have admin or not
13:09:48 <royce> alright...
13:10:03 <aglitke> #topic template update
13:10:08 <aglitke> shaohef: Please go ahead.
13:10:15 <zhoumeina> #32can be closes
13:11:35 <shaohef> aglitke:  yes. we should need a template update
13:11:43 <shaohef> aglitke: also we need vm update
13:12:05 <hlwanghl> shaohef: your update template patches already reviewed, right?
13:12:20 <shaohef> aglitke: I think, we need a general PUT method for update
13:12:25 <shaohef> hlwanghl: yes.
13:12:37 <shaohef> hlwanghl: I resend the patch.
13:12:47 <aglitke> shaohef: Yes, I agree.  We need a way for each resource to declare the fields which can be updated.
13:12:50 <sming> sahohef:+1 user can update the memory of a VM when more memory is needed.
13:13:17 <aglitke> if a user specifies a field which cannot be updated then we must deny the whole request with 405
13:13:42 <aglitke> we need to be careful about this because updates can be tricky.
13:14:04 <AdamKingIT> We may consider what update granularity we want to authorize for...
13:14:13 <shaohef> aglitke: agree.
13:14:15 <aglitke> when you reduce the memory amount what does it mean? balloon? or redefine the VM and changes will take place on next reboot?
13:14:28 <AdamKingIT> Giving a user the auth to update their VMname is one thing, letting them take all the memory is another
13:14:36 <shaohef> AdamKingIT: agree
13:15:05 <royce> I think we are talking about static config update, isn't it? aglitke
13:15:06 <sming> aglitje: I think it is redefing the VM and changes will take place on next reboot.
13:15:12 <aglitke> I have never been a big fan of the PUT method
13:15:21 <aglitke> sming: I agree.
13:15:30 <shaohef> aglitke: about the name for update. should we allow modify the name of resource?
13:15:41 <hlwanghl> Only do the updating when VM is stopped.
13:15:53 <aglitke> shaohef: Yes, I think name is fine.
13:16:09 <AdamKingIT> Do we have room for a comment or notes field?
13:16:10 <royce> I've already sent patches about vm rename
13:16:11 <aglitke> Templates can allow all fields to be updates.
13:16:16 <aglitke> updated/
13:16:19 <shaohef> aglitke: but the URL will change
13:16:41 <aglitke> shaohef: Yes, that is why a redirect happens after a put request.
13:16:48 <zhoumeina> if the vm fields changed, so the template will changed too?
13:17:05 <royce> zhoumeina, I don't think so...
13:17:16 <shaohef> aglitke: yes, it will change permanently
13:17:16 <aglitke> zhoumeina: No.  Once a VM is created from a template, the vm no longer has any relationship with the template.
13:17:26 <zhoumeina> ok
13:17:47 <zhoumeina> so they are seperate
13:18:14 <zhoumeina> got it , go ahead all
13:18:23 <aglitke> shaohef: First I would like to see a generic design in the Resource class that allows child clases to declare the changeable fields
13:18:37 <AdamKingIT> I would think of the template as a cookie cutter. Once you cut the cookie out of the dough, you can reshape it w. your fingers without affecting the shape of the cutter
13:18:47 <aglitke> AdamKingIT: yep
13:19:05 <aglitke> and if you reshape the cutter, the already cut cookies wont change either.
13:19:27 <AdamKingIT> yep
13:19:36 <zhoumeina> great , very clear
13:19:37 <sming> AdamKingIT: not sure what is cookie cutter.
13:19:42 <royce> good metaphor:)
13:19:51 <AdamKingIT> let me find a pic
13:20:21 <AdamKingIT> https://en.wikipedia.org/wiki/Cookie_cutter
13:20:22 <hlwanghl> I guess, it's a tool to shape cookie
13:20:32 <sming> AdamKingIT: Got it.
13:20:46 <aglitke> shaohef: For the design, the backend will be called with the dict of new values only if all values are allowed to be changed.
13:20:49 <zhoumeina> can
13:21:08 <shaohef> aglitke: agree
13:21:40 <aglitke> the backend will then make the requested changes and then return the identifier of the resource (since it may or may not have changed).
13:21:49 <hlwanghl> aglitke: It's a validation step. Both server- and client-side need it.
13:22:11 <hlwanghl> We can think it together for backend and frontend.
13:22:28 <zhoumeina> yeah, I want to join too
13:22:41 <aglitke> ok
13:22:51 <royce> aglitke, I'm little bit worried when fields become a lot, the dict in resource are difficult to maintain, and we may need to validate the field
13:22:54 <aglitke> are we good on that topic.
13:22:58 <AdamKingIT> As we get to authorization checks, I'd rather not let the user enter data that the backend isn't going to accept from them
13:23:20 <hlwanghl> Make the dict be easy to convert to JSON should be helpful
13:23:27 <shaohef> aglitke: how about the authority on the change fields?
13:23:33 <aglitke> yes, always json
13:23:51 <hlwanghl> cool
13:23:51 <aglitke> shaohef: Right now, any authenticated user can change anything.
13:24:20 <shaohef> aglitke: got it
13:24:28 <AdamKingIT> at present that is true, but we don't want it to always be true. Trying to think ahead a little
13:24:30 <hlwanghl> shaohef: Authority is another topic.
13:24:56 <hlwanghl> Should map users/roles to resources, etc.
13:25:17 <aglitke> yeah... Not ready for that discussion right now.
13:25:21 <AdamKingIT> y. Will get interesting as we try to define granularity on those resources
13:25:41 <aglitke> can we shift gears to another topic now?
13:25:51 <zhoumeina> OK
13:25:54 <aglitke> Now that AdamKingIT is here I want to discuss the build process
13:25:57 <sming> aglitke: please
13:26:02 <aglitke> #topic Build process
13:26:31 <aglitke> I have been working hard on revamping the build system in kimchi to make it uniform and standard
13:26:46 <aglitke> The first patch set I sent had some issues and todos
13:26:56 <aglitke> The next one will be much better.
13:27:20 <aglitke> But I would first like to see if anyone has any concerns with adopting an autotools based build
13:27:22 <shaohef> aglitke: the patch is too huge.
13:27:40 <aglitke> shaohef: It is a lot of boiler-plate generated code.
13:27:49 <aglitke> I can try to break it up better for final submission.
13:27:53 <shaohef> aglitke: split it?
13:27:58 <aglitke> But there will be a lot of code imported.
13:28:05 <aglitke> shaohef: Yes, not a problem.
13:28:06 <shaohef> aglitke: that's fine.
13:28:23 <AdamKingIT> If you would indulge my ignorance. Can you describe advantages/disadvantages?
13:28:45 <aglitke> Advantages of autotools build is automatic discovery of dependencies in the build.
13:28:57 <aglitke> ./configure can give you an error if your cherrypy is too old
13:29:07 <aglitke> etc/
13:29:08 <aglitke> ...
13:29:13 <royce> AdamKingIT, I think it can handle different build env easily
13:29:15 <aglitke> Another + is:
13:29:25 <aglitke> ./configure && make && make install
13:29:30 <aglitke> a standard build
13:29:31 <shaohef> aglitke:   setup.py also can automatic discovery of dependencies
13:29:46 <aglitke> instead of the distutils build + some Makefiles for generating packages.
13:30:14 <shaohef> aglitke: ./configure && make && make install,   GNU standard build?
13:30:15 <aglitke> Also, trying to write python code for dependency tracking seems strange when there is a tool that does it natively.
13:30:23 <alinefm> aglitke, will we still use makefiles to create rpm/deb packages or not?
13:30:26 <aglitke> make knows when things need to be rebuilt or cleaned.
13:30:47 <aglitke> alinefm: That is a different topic that I want to address separately.
13:30:56 <alinefm> ok
13:30:57 <shaohef> alinefm:  we need automake? aglitke, right?
13:30:57 <aglitke> right after this.
13:31:04 <aglitke> yes
13:31:44 <AdamKingIT> disadvantages?
13:31:45 <shaohef> aglitke:  what can I help for the autotools?
13:32:00 <aglitke> AdamKingIT: Another advantage is that autotools-enabled projects have standardized make rules that can be useful
13:32:14 <aglitke> AdamKingIT: eg. make dist
13:32:25 <aglitke> and it has builtin gettext support
13:32:42 <aglitke> disadvantages: another build system to learn
13:32:53 <aglitke> can be more complex than distutils
13:33:23 <royce> I have done mom autobuild system, I can help if you need~
13:33:27 <aglitke> those are the main ones I can think of./
13:33:46 <sming> AdamKingIT:  I think one of the advantages is the makefile and ./configure files generated are quite complex and hard to understand.
13:33:47 <aglitke> yep, we have some experience with it/
13:33:56 <aglitke> Many other example projects that use it.
13:34:19 <aglitke> sming: you should only read configure.ac and Makefile.am
13:34:29 <shaohef> aglitke: I have learned the autotools, autoconf and automake.  :)
13:34:31 <aglitke> the Makefile.in and Makefile files are considered output files.
13:34:42 <aglitke> they are not meant to be read
13:35:04 <sming> aglitke: Sometimes, I need read the final files to understand the errors.
13:35:14 <AdamKingIT> Sorry to have to ask. I have a lot of recent experience with Ant (and derivatives) but haven't used make in this millenium
13:35:33 <shaohef> aglitke: sming: AdamKingIT: also, a lot of macro, we should to learn
13:35:56 <aglitke> shaohef: We may be able to avoid writing our own m4 macros
13:36:09 <aglitke> AdamKingIT: No worries, what is your question about make?
13:36:23 <shaohef> sming: yes. we need to read the final files some times.
13:37:17 <AdamKingIT> I guess I would summarize the proposal as advantage: allow more developers can contribute/build without making adjustments to t heir env. disadvantage: anyone needing to make build updates will face a higher hurdle
13:37:32 <AdamKingIT> fair?
13:38:17 <aglitke> Yeah, I'd say so.  Once the infrastructure is in place, it's pretty easy to understand how to modify the Makefile.am files for common tasks.
13:38:38 <aglitke> usually we are just adding a new file to the system
13:38:42 <sming> AdamKingIT: another advantage is it is platform-independent.
13:38:52 <AdamKingIT> k. Seems like an easy decision
13:39:21 <aglitke> I will keep plugging away at these patches and try to break them up a bit.
13:39:27 <hlwanghl> sming: platform-independant?
13:39:48 <aglitke> Then, just like coding style patches. when they go in it is a bit disruptive at first.
13:40:05 <aglitke> People may experience some issues with building or rebasing patches, etc.
13:40:44 <aglitke> alinefm: I would like to talk about packaging.
13:40:48 <sming> hlwanghl: Yes, you can use the same .ac, .am files to generate makefiles in different Linux/Unix distos.
13:40:55 <royce> hlwanghl, I think sming means it can compatible with multiple linux distro.
13:41:16 <alinefm> aglitke, sure
13:41:19 <aglitke> For mature projects, the packaging artifacts are not stored in the upstream package
13:41:23 <hlwanghl> royce: sming: OK :)
13:41:40 <aglitke> ie. for mom, the spec file we use for fedora is maintained in a fedora-specific git repo
13:41:56 <aglitke> I believe the same holds true for debian/ubuntu.
13:42:08 <aglitke> We are not a mature project _yet_.
13:42:36 <aglitke> In this situation, I believe we should place all of the platform/packaging files in a contrib directory
13:42:50 <shaohef> aglitke: we just generate the tar ball without the rpm or deb package?
13:42:56 <aglitke> I think we should split the spec file into a redhat file and a suse file
13:43:24 <sming> aglitke: creating another contrib directory under Kimchi?
13:43:28 <aglitke> for rpm building here is how the process should work.
13:43:39 <aglitke> ./configure && make dist
13:43:47 <aglitke> this generates a tarball of the current code.
13:43:57 <aglitke> copy tarball to ~/rpmbuild/SOURCES
13:44:17 <aglitke> copy contrib/kimchi-redhat.spec to ~/rpmbuild/SPEC
13:44:32 <aglitke> rpmbuild -ba ~/rpmbuild/SPEC/kimchi.spec
13:44:44 <alinefm> aglitke, those steps will be manual?
13:44:46 <aglitke> this is how kimchi will be made in fedora
13:45:11 <aglitke> until we are officially part of fedora we can make this easier by creating a shell script in contrib
13:45:59 <aglitke> then to build rpms you would just run ./contrib/make-rpm.sh <distro>
13:46:16 <AdamKingIT> if I understand the flow, it seems like a lot of steps. Can we not have a target to accomplish same?
13:46:40 <alinefm> I also would like a single target to create the package
13:46:44 <aglitke> AdamKingIT: Sure.  We can add targets in the top-level Makefile to call this script
13:47:10 <aglitke> but eventually those would go away once packaging is taken over by the official packagers.
13:47:42 <aglitke> if you look at qemu / libvirt / ... none of these projects have package building infrastructure that is used anymore.
13:47:56 <aglitke> but we need to bridge the gap
13:48:36 <aglitke> So for now, we will make it easy to build packages but we will use the process that the distros themselves will eventually use.
13:48:48 <aglitke> to make the transition easier
13:48:51 <AdamKingIT> seems like its worth it during startup mode. Present the lowest barrier to contributing until we have enough momentum to be picked up by the distros
13:49:13 <alinefm> aglitke, got it
13:49:20 <aglitke> I already have a good start on the scripts we'll need for this.
13:49:27 <alinefm> aglitke, I can help on that
13:49:27 <shaohef> aglitke: seems a manual configure in qemu
13:49:28 <aglitke> Will submit as part of the next series.
13:49:50 <alinefm> aglitke, is it blocked for autotools scritps?
13:50:09 <aglitke> alinefm: Yeah.  you need the build infra in place first.
13:50:17 <aglitke> I will send something out soon.
13:50:36 <aglitke> Hope to squeeze it in today yet.
13:50:50 <aglitke> ok... next topic (running out of time quickly!)
13:50:54 <alinefm> aglitke, ok
13:50:57 <aglitke> #topic ISO Scanning
13:51:26 <aglitke> shaohef / hlwanghl: You guys submitted a poc for iso scanning some time ago
13:51:51 <aglitke> I was wondering if you could rebase on top of the merged async tasks API.
13:52:19 <aglitke> I think we have some design issues to work out with how it should work (especially the front ens)
13:52:20 <hlwanghl> Let me check. It's about template creation?
13:52:23 <aglitke> front end
13:52:26 <shaohef> aglitke: sure.
13:52:35 <royce> aglitke, its dingxin...
13:52:42 <aglitke> hlwanghl: yes, create multiple templates from a search for isos
13:52:52 <aglitke> royce: Oh sorry.  Bad memory.
13:53:06 <sming> royce: I think you also post something about ISO scanning?
13:53:11 <hlwanghl> aglitke: royce: I'll tell Xin
13:53:23 <royce> aglitke, it works with previous design of expose /ISO
13:53:24 <aglitke> We would like to use an asynctask to scan for isos and create templates
13:53:35 <royce> I have already tested and rebased
13:53:39 <aglitke> royce: Yes, I am concerned about exposing /iso
13:54:01 <aglitke> what are the rules for expiration of the ISOs collection?
13:54:08 <aglitke> are iso images moved to a directory?
13:54:13 <royce> I rebased with automatically template generating, front end seems not done
13:54:45 <royce> As last time we decided not to expose /iso
13:54:55 <aglitke> ok.
13:55:12 <aglitke> so now templates will be created automatically from all found isos
13:55:12 <royce> I rebased this series to be scan and auto template generating
13:55:15 <aglitke> ok
13:55:17 <hlwanghl> royce: Then you can work with Xin about that. I remember Xin had code dealing with it.
13:55:37 <aglitke> The next issue is to decide how the user can manage all of the newly created templates.
13:55:57 <AdamKingIT> Getting this working will be better than not having it, but I am less comfortable with the autogeneration without user input as we had mocked earlier
13:55:57 <aglitke> Maybe they want an intermediate step where then can select the templates that they would like to keep
13:56:02 <royce> I discussed with dingxin this Monday, I can work with him if guys agree with these design
13:57:16 <royce> aglitke, and dingxin and I really think for single iso the input of full path is painfull...
13:57:20 <sming> aglitke:  +1,  we should manage the automatically created templates and mark the necessary ones.
13:57:43 <aglitke> I am not sure what the best way to converge on an API design is.
13:58:02 <aglitke> I can think of a way to handle /isos collections as well but I am not sure if I want to do it.
13:58:07 <AdamKingIT> I prefer the intermediate step as well. It will require some "progress" feedback  to the user though
13:58:13 <sming> royce: agree.  I like to have a file browser.
13:58:31 <aglitke> file browsers can reveal too much information about the internals of the server
13:58:36 <aglitke> a scan is better
13:58:45 <AdamKingIT> There are a couple places where a 'file browser' motif through the browser would be handy, including this
13:59:00 <royce> If taged as necessary, it means newly created template are deleted imediately...
13:59:14 <alinefm> file browser is useful and the admin knows which iso he/she would like to include
13:59:29 <royce> necessary/unnecessary
13:59:30 <alinefm> if it is only one/two isos why yse san?
14:00:04 <AdamKingIT> the 'file browser' could be used to select a specific dir, to scope the scan as well
14:00:47 <aglitke> I am trying to think of a RESTful way to expose a directory hierarchy
14:00:56 <AdamKingIT> obvious negative being the complication of dealing with all the permissions
14:01:18 <AdamKingIT> Have you used GSA tools?
14:01:19 <aglitke> Yes, it's a potential security nightmare
14:01:28 <aglitke> AdamKingIT: yes
14:01:47 <royce> and will you pls review my patchset about scan? aglitke?
14:01:58 <aglitke> royce: sure
14:02:32 <royce> after that I can work with front end to make it work~
14:02:36 <aglitke> How should we have a discussion about the frontend design for approving found isos?
14:03:04 <AdamKingIT> There is a design mockup posted on the community. comments?
14:03:07 <aglitke> I think we need to agree on an API before we waste too much time writing throw-away implementations.
14:03:17 <aglitke> Is that public
14:03:31 <royce> absolutely, aglitke
14:03:53 <AdamKingIT> n, though it will get more public this week if not public public.
14:04:07 <aglitke> Ok, then we can not use it for the discussion
14:04:35 <aglitke> If it can be posted in a wiki page on github, then we could try to start there.
14:04:53 <royce> the mock is based on exposing /iso, by the way...
14:05:16 <aglitke> alright... we have reached the top of the hour now.  thanks everyone
14:05:20 <aglitke> #endmeeting