Perl 6 - the future is here, just unevenly distributed

IRC log for #puppet-openstack, 2015-03-12

| Channels | #puppet-openstack index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:27 rmoe joined #puppet-openstack
00:27 ericpeterson joined #puppet-openstack
01:02 topshare joined #puppet-openstack
01:07 topshare joined #puppet-openstack
01:27 markvoelker joined #puppet-openstack
01:33 topshare_ joined #puppet-openstack
01:37 xarses joined #puppet-openstack
01:55 badiane_ka joined #puppet-openstack
02:44 openstackgerrit David Moreau Simard proposed stackforge/puppet-ceph: Change default nodeset to an actual file  https://review.openstack.org/163686
03:35 topshare joined #puppet-openstack
03:41 morazi joined #puppet-openstack
03:43 topshare joined #puppet-openstack
03:55 topshare joined #puppet-openstack
04:10 sanjayu joined #puppet-openstack
04:24 topshare joined #puppet-openstack
04:47 topshare joined #puppet-openstack
04:55 openstackgerrit David Moreau Simard proposed stackforge/puppet-ceph: Leverage metadata.json to install the module  https://review.openstack.org/163695
05:03 xingcha__ joined #puppet-openstack
05:10 aarefiev joined #puppet-openstack
05:14 dvorak joined #puppet-openstack
05:16 britthouser joined #puppet-openstack
05:21 topshare joined #puppet-openstack
05:23 topshare_ joined #puppet-openstack
05:24 britthouser joined #puppet-openstack
05:25 markvoelker joined #puppet-openstack
05:40 britthouser joined #puppet-openstack
05:50 britthouser joined #puppet-openstack
06:26 markvoelker joined #puppet-openstack
07:27 tfz joined #puppet-openstack
07:28 markvoelker joined #puppet-openstack
07:34 hostranger joined #puppet-openstack
07:35 hostranger left #puppet-openstack
08:03 jistr joined #puppet-openstack
08:11 openstackgerrit Yanis Guenane proposed stackforge/puppet-cinder: backends: Add an extra_options door  https://review.openstack.org/163365
08:11 gildub joined #puppet-openstack
08:18 arnaud_orange joined #puppet-openstack
08:29 markvoelker joined #puppet-openstack
08:30 dgurtner joined #puppet-openstack
08:43 tfz joined #puppet-openstack
08:45 openstackgerrit Gael Chamoulaud proposed stackforge/puppet-glance: Add $notification_driver parameter to notify::rabbitmq  https://review.openstack.org/161242
09:00 arnaud_orange joined #puppet-openstack
09:22 openstackgerrit Gael Chamoulaud proposed stackforge/puppet-keystone: Fix service keystone conflict when running in apache  https://review.openstack.org/127939
09:23 derekh joined #puppet-openstack
09:30 markvoelker joined #puppet-openstack
09:34 mmagr joined #puppet-openstack
09:36 jpena joined #puppet-openstack
09:45 ddmitriev joined #puppet-openstack
10:01 c0m0 joined #puppet-openstack
10:12 andriikolesnikov joined #puppet-openstack
10:24 openstackgerrit Gael Chamoulaud proposed stackforge/puppet-keystone: Fix service keystone conflict when running in apache  https://review.openstack.org/127939
10:31 markvoelker joined #puppet-openstack
10:43 IBerezovskiy joined #puppet-openstack
10:53 jistr joined #puppet-openstack
11:06 dgurtner joined #puppet-openstack
11:29 rcallawa joined #puppet-openstack
11:31 tfz joined #puppet-openstack
11:33 markvoelker joined #puppet-openstack
12:03 cdent joined #puppet-openstack
12:09 EmilienM good morning!
12:15 markvoelker joined #puppet-openstack
12:21 ferest joined #puppet-openstack
12:22 morazi joined #puppet-openstack
12:31 gchamoul bon matin!
12:35 dgurtner joined #puppet-openstack
12:37 dprince joined #puppet-openstack
12:43 michchap joined #puppet-openstack
12:51 rcallawa joined #puppet-openstack
12:56 social EmilienM: https://github.com/stackforge/puppet-swift/blob/​master/lib/puppet/type/ring_account_device.rb#L8 is wrong
12:57 social EmilienM: but fix is not really nice because if we'd go by RFCs the regexp should be this simple one - https://www.debuggex.com/r/87xysuweX4w7kiGq
12:59 rcallawa joined #puppet-openstack
13:03 dalgaaf joined #puppet-openstack
13:18 stevemar joined #puppet-openstack
13:19 tfhartmann joined #puppet-openstack
13:26 dgurtner joined #puppet-openstack
13:26 dgurtner joined #puppet-openstack
13:28 richm joined #puppet-openstack
13:43 dgurtner joined #puppet-openstack
13:43 dgurtner joined #puppet-openstack
13:51 openstackgerrit Dan Prince proposed stackforge/puppet-ceilometer: Add support for identity_uri.  https://review.openstack.org/163825
13:56 xingchao joined #puppet-openstack
14:08 ericpeterson joined #puppet-openstack
14:15 tfhartmann joined #puppet-openstack
14:23 topshare joined #puppet-openstack
14:29 openstackgerrit Dan Prince proposed stackforge/puppet-swift: Add support for identity_uri.  https://review.openstack.org/163844
14:34 prad joined #puppet-openstack
14:34 ericpeterson joined #puppet-openstack
14:43 mdorman joined #puppet-openstack
15:02 openstackgerrit David Moreau Simard proposed stackforge/puppet-ceph: Change default nodeset to an actual file  https://review.openstack.org/163686
15:19 xingchao joined #puppet-openstack
15:35 prad joined #puppet-openstack
15:38 EmilienM mfisch: crinkle: when you're up, maybe we can chat a bit about the midcycle
15:40 mdorman mfisch is still on the east coast meeting with dvorak and others, so he may or may not be around too much
15:40 EmilienM mdorman: ok thx
15:40 mdorman good meetup though :)
15:45 xarses joined #puppet-openstack
16:00 dmsimard nibalizer: Added you on https://review.openstack.org/#/c/163695/ since you're that beaker guy :)
16:00 pasquier-s joined #puppet-openstack
16:00 dmsimard If it makes sense, I'd contribute it back to puppet-nova (and other modules though I haven't found that many with the skeleton in place)
16:07 dontalton joined #puppet-openstack
16:19 f10d4 joined #puppet-openstack
16:19 f10d4 ohai
16:20 mschmitt joined #puppet-openstack
16:23 dgurtner joined #puppet-openstack
16:23 dgurtner joined #puppet-openstack
16:23 prad joined #puppet-openstack
16:28 rmoe joined #puppet-openstack
16:39 rcallawa joined #puppet-openstack
16:50 tfhartmann joined #puppet-openstack
17:06 aimon joined #puppet-openstack
17:12 f10d4 left #puppet-openstack
17:18 mfisch here
17:26 britthouser joined #puppet-openstack
17:43 nosleep77 joined #puppet-openstack
17:48 ddmitriev1 joined #puppet-openstack
17:58 andriikolesnikov joined #puppet-openstack
18:06 crinkle EmilienM: hi
18:06 EmilienM crinkle: o/
18:07 EmilienM crinkle: I think we have enough on our plate to prepare a real agenda for a meeting
18:10 EmilienM crinkle: is it still on Monday for the next one?
18:10 crinkle yes
18:10 crinkle but we can discuss moving it on monday
18:28 mdorman joined #puppet-openstack
18:31 rcallawa joined #puppet-openstack
18:34 mfisch FYI if you put newlines in your tenant descriptions it breaks puppet-keystone, found out today
18:34 mfisch parsing command line output FTL
18:35 nibalizer dmsimard: cool!
18:37 dmsimard nibalizer: Apparently it didn't work for jenkins though, just noticed: http://logs.openstack.org/95/163695/1/chec​k/gate-puppet-ceph-puppet-beaker-rspec/eee​e1bd/console.html#_2015-03-12_05_00_46_542
18:37 EmilienM mfisch: lol funny one
18:37 EmilienM who puts newlines ? :D
18:39 * nibalizer proposed ideas!
18:42 dmsimard nibalizer: I thought about using librarian-puppet but I didn't want to add that dependency.. I like the added benefit of testing the build and install of the module too
18:42 mdorman EmilienM:  we had talked about abusing the project description field to store some project metadata in json.  so it’s conceivable..
18:43 nibalizer dmsimard: yea you've got a cool thing there
18:43 nibalizer im +1
18:43 EmilienM mdorman: yeah it makes sense
18:44 dmsimard nibalizer: Thanks :) I'll fix that jenkins thing and i'll submit a new patchset
18:46 dprince joined #puppet-openstack
18:46 EmilienM crinkle: what do you think if I start by sending a doodle about meeting reforms ?
18:47 rcallawa joined #puppet-openstack
18:47 crinkle EmilienM: that would be great!
18:48 EmilienM crinkle: ok
18:58 ericpete_ joined #puppet-openstack
19:00 ericpete_ joined #puppet-openstack
19:01 dmsimard nibalizer: I'm trying to find where I could (potentially) run stuff on the hypervisor rather than the in the VM. I guess that would be in the job ? Trying to find it in project-config but no luck. Can you point me in the right direction ?
19:03 dmsimard nevermind, found it
19:06 dmsimard nibalizer: Should I add the module build right here: https://github.com/openstack-infra​/project-config/blob/master/jenkin​s/jobs/puppet-module-jobs.yaml#L50 ? So that I could scp and install it on the VM.
19:06 nibalizer probably not
19:07 dmsimard So send the module to the VM and build it there ?
19:07 nibalizer the spec helper acceptance is gonna be used by both local builds and nodepool ones
19:07 nibalizer ya
19:07 dmsimard makes sense
19:07 nibalizer though yea putting tooling around the puppet module tool feels like the wrong approach
19:07 nibalizer since it cant use git
19:08 nibalizer so you'll end up in the position where you are using latest-git for ceph, bu the forge release for keystone, glance etc
19:08 nibalizer which isn't a good thing to do
19:08 tfhartmann joined #puppet-openstack
19:11 dmsimard I kind of see where you're going but we're simulating what would happen if someone would do "puppet module install puppetlabs/nova" right ?
19:11 dmsimard The way I see it is like puppet module install puppetlabs/nova from the master branch
19:11 dmsimard There's no pinning down to the commits in https://github.com/stackforge/puppet-n​ova/blob/master/metadata.json#L34-L42
19:12 rcallawa joined #puppet-openstack
19:12 EmilienM crinkle: also for the PTL election, we should announce it officially and ask for candidacies I guess. Also contact anteaya to know the technical details
19:16 dmsimard nibalizer: That said, I pin down to commits in *my* composition layer Puppetfile (where librarian-puppet is used) but I think we want to make sure the dependencies we have set in the metadata.json are correct
19:16 dmsimard In some places we pin down to the branch, not necessarily commits, but you get the point :)
19:17 mgagne dmsimard: this has been a known problem for years and hasn't been addressed since we talked about it in Hong Kong. rspec tests use .fixtures.yaml. Puppetmaster uses Puppetfile, module uses Modulefile/metadata.json. Each of them might be out of sync. Module doesn't support pinning to commit, .fixtures.yaml doesn't support forge (afaik), Puppetfile supports both.
19:18 dmsimard mgagne: So the tests might work but if I install the module off of the forge it might not, then ?
19:18 mgagne dmsimard: to be 100% pedantic, you would have to use metadata.json in rspec tests. But then you find out that nobody on earth uses forge (well, within the openstack operators community)
19:19 mgagne dmsimard: and then you introduce changes in your module that requires the latest (non-released) versions of an other puppet module for openstack and you cry
19:20 EmilienM crinkle: I wonder if doodle is the right tool or maybe http://civs.cs.cornell.edu/civs_create.html (for meeting rescheduling)
19:21 mgagne EmilienM: who is using civs for meeting scheduling in openstack community?
19:21 EmilienM mgagne: no idea
19:21 EmilienM mgagne: what do they use ?
19:21 dmsimard mgagne, nibalizer: Looks like people already have had this kind of discussion around beaker before..
19:21 dmsimard Sorry for link, it's gone - cached version: http://webcache.googleusercontent.com/search​?q=cache:hZioWp8mEecJ:https://github.com/pup​petlabs/beaker/issues/550+&cd=1&hl=e​n&ct=clnk&gl=ca&client=ubuntu
19:22 mgagne dmsimard: we should have both kind of tests IMO if we really want to test against forge modules. but they would fail 99% of the time anyway
19:23 mgagne dmsimard: unless beaker tests are for ceph, then I don't care =)
19:23 stamak joined #puppet-openstack
19:23 dmsimard Hunner: Do you have an opinion on how we should install module dependencies in beaker VMs ? I was suggesting something like https://review.openstack.org/#/c/163695/ but it's true that metadata.json doesn't necessarily reflect the reality.
19:23 dmsimard mgagne: Trying to migrate ceph to beaker but AFAIK some people are trying to implement it in other projects as well :p
19:25 mgagne dmsimard: some common deps are documented here: https://wiki.openstack.org/wik​i/Puppet-openstack/Development but it's the worst way to maintain it as no one maintains the list (not even myself)
19:27 dmsimard mgagne: The general idea was that instead of doing something like this: https://github.com/stackforge/puppet-nova/blob​/master/spec/spec_helper_acceptance.rb#L21-L32
19:28 dmsimard mgagne: We'd do something like this: https://review.openstack.org/#/c/16​3695/1/spec/spec_helper_acceptance.rb
19:28 dmsimard mgagne: But I didn't realize metadata.json was perhaps too out of touch with the reality
19:28 mgagne dmsimard: not sure how it fixes dependency installation
19:28 mgagne dmsimard: it's not out of touch
19:29 dmsimard It doesn't - it mostly just avoids de-duplicating the dependencies in yet another kind of file
19:30 mgagne dmsimard: by using metadata.json, we would be making the wrong assumption that the module is working against the latest *released* puppet modules which is mostly never the case as we usually release them all together like OpenStack itself.
19:31 dmsimard mgagne: True. So we'd need a mechanism to have beaker install off of the right releases of the modules.
19:31 mgagne dmsimard: we would have to use metadata.json for everything EXCEPT our own modules which should be installed from git. And with the assumption that it will eventually work if we release them all at the same time.
19:31 dmsimard Which might be down to the commit
19:31 mgagne dmsimard: there is no release
19:31 dmsimard s/release/version/
19:31 nibalizer interesting
19:31 mgagne dmsimard: if it's only in git, I don't consider it released
19:32 mgagne nibalizer: we (dan and myself) had similar ideas back in Hong Kong but I was just too lazy/tired to implement it after the summit ^^'
19:32 nibalizer hehe
19:32 nibalizer yay for summit exhaustion
19:33 mgagne and the dark shadow of operation's life took over my free time
19:33 nibalizer i think installing from metadata.json is a great idea but since metadata.json can't do git its gonna be a bad solution
19:33 nibalizer i still think a puppet-global-requirements file is the way to go, probably keep it in its own repo
19:34 nibalizer also we need a stupid simple composition layer so we can bring up openstack with puppet then hit it with tempest
19:34 mgagne nibalizer: yea, the fact that Dan pointed out that he and I were doing ALL the reviews kind of opened up my eyes and I slowly stopped doing reviews in a hope to preserve my sanity
19:34 mgagne nibalizer: composition layer +1
19:35 mgagne nibalizer: the challenge we faced is: how do you have a common composition layer that exercise your latest commit? we end up with a chicken-egg problem
19:35 mgagne nibalizer: and to some extend: exercise ALL the config combinaisons
19:36 mgagne nibalizer: even openstack can't do it properly, they rely on 3rd party CI for that
19:37 nibalizer so i think devstack started out simple
19:37 nibalizer and got more complicated as people got fed up running over bugs
19:39 mgagne nibalizer: devstack allows you to customize a lot of the configs. Our composition layer could do the same using hiera. We however have to agree to a set of scenario: all-in-one, multi-nodes, etc.
19:39 nibalizer all-in-one i think, like devstack
19:39 mgagne and fix the chicken-egg problem
19:39 nibalizer well thirdpartyci does help with that
19:40 mgagne nibalizer: I'm not sure how people are testing their commit with tempest atm. doesn't the commit have to merge first and then you introduce the test in tempest?
19:40 nibalizer you don't have to solve the chicken and egg problem at first
19:40 nibalizer because i think the bigger test that devstack/tempest is doing is preventing regressions
19:40 openstackgerrit joined #puppet-openstack
19:41 mgagne nibalizer: you will agree that it's an "opt-in" solution. =)
19:41 nibalizer unit tests for new features, idunno the people in openstack-qa probably have actually thought of that
19:42 mgagne right, unfortunately we (especially me) are bad at those kind of tracking
19:42 mgagne "don't forget to add a test in tempest later" right
19:43 nibalizer well the tempest people would actually know the answer to this, but i dont think tempest tests everything under the sun
19:43 nibalizer it tries to hit the 75%
19:43 nibalizer and it does a lot of trying to fake out openstack, giving it malformed json and xml and stuff
19:44 nibalizer we don't need those tests
19:44 nibalizer we just need to stand up a stack, and send events through it, exercising as many of the parts as we can
19:52 dmsimard nibalizer: Well, the end of the story is that for the time being I'll do this since this is essentially what we already do (through several puppet module install calls)
19:52 mgagne nibalizer: wasn't it the job of smokestack? =)
19:52 dmsimard Let's think of a better way in the future ..
19:57 ericpeterson joined #puppet-openstack
19:59 ericpeterson joined #puppet-openstack
20:02 EmilienM dvorak: welcome to core members :-)
20:05 openstackgerrit Merged stackforge/puppet-ceilometer: Add support for identity_uri.  https://review.openstack.org/163825
20:05 dvorak wow, thanks! :)
20:07 Hunner dmsimard: For beaker module dependencies, yeah doing a package build and install would be cool, but I still tend to do the former (explicitly install each module) because sometimes tests rely on modules not mentioned in the metadata.json
20:07 Hunner So perhaps a combination of both?
20:08 Hunner eg, java_ks needs openjdk or something to work, so we puppet module install puppetlabs-java for testing, even though pl-java isn't a dependency of pl-java_ks
20:18 aimon joined #puppet-openstack
20:33 mfisch more fun with keystone provider, it also crashes on keystone services with no description
20:33 stevemar mfisch, as-designed
20:33 stevemar mfisch, whats up?
20:34 mfisch We have a keystone service with a blank description, puppet does not like that
20:34 mdorman mfisch:  you talking about the new provider?  we don’t have any descriptions and things seem to work for me
20:35 stevemar mfisch, description should be optional
20:36 crinkle yeah that shouldn't cause a problem http://git.openstack.org/cgit/stackfor​ge/puppet-keystone/tree/lib/puppet/pro​vider/keystone_tenant/openstack.rb#n22
20:40 tfz joined #puppet-openstack
20:40 mfisch Something else weird happening
20:41 mfisch role-list, service-list, all claiming to fail with an unquoted character
20:41 mfisch nothing odd in them
20:42 mfisch This is the start of about 30 errors
20:42 mfisch Error: /Stage[main]/Neutron::Keystone::Auth/​Keystone::Resource::Service_identity[​neutron]/Keystone_service[neutron]: Could not evaluate: Unclosed quoted field on line 15.
20:44 nibalizer dmsimard: yea, you have my +1
20:48 dvorak crinkle: around?
20:48 dvorak I think we ran into a new weird edge case around the keystone openstack client csv parsing
20:50 dvorak We have tenant descriptions that embedded newlines in them
20:50 dvorak which seems to be breaking the csv parsing logic that you put in, I think to separate out mixed stdout and stderr?
20:52 dvorak I really wish we could just make openstack client spit out json, but apparently the version in trusty doesn't support that
20:53 crinkle arg
20:53 crinkle can you show the output of `openstack project list --format csv`
20:53 crinkle I don't think it occurred to me that csv would have a field with multiple lines
20:54 dvorak https://gist.github.com/dv​orak/bc0d02f9e54edea31a87
20:54 dvorak actually, that's the output with --quiet
20:54 dvorak I ran the actual command that puppet did from the debug output
20:54 crinkle that's fine
20:55 dvorak am I right that the issue is mixing of stderr and stdout?
20:55 crinkle well that fix was because it was trying to ignore stuff in stderr
20:55 crinkle so yeah that's probably breaking this
20:56 crinkle we could have it just ignore warnings from the beginning of the output up until the first valid csv line
20:56 dvorak what sort of output did you see coming back in stderr?
20:56 dvorak ah, yeah, that'd probably be doable
20:56 dvorak so you think the stuff would always be at the beginning?
20:57 dvorak so we could do something like response.sub(/\n"/,'')
20:57 dvorak actually, no, but something like that
20:57 crinkle this was the thing that prompted the fix http://paste.fedoraproject.org/190277/24870892/
20:58 crinkle if that's any indication then errors should always appear at the top
20:58 crinkle but i'm not really sure
21:00 dvorak we're also seeing some errors about illegal quoting, I'm still digging into it
21:07 dvorak ah ha!
21:07 dvorak openstack client is emitting all lines with \r\n at the end of of each line
21:07 dvorak the trailing \n isn't being put back on the end of the output when you reassemble the lines
21:08 dvorak so the last line ends with just \r, not \r\n
21:08 mdorman omg
21:08 mdorman what is this, ms-dos?
21:08 crinkle huh?
21:08 crinkle what makes you think it's using \r ?
21:09 dmsimard Hunner: Thanks for the input :)
21:09 dvorak crinkle: added debug statements to print the lines with pp
21:09 vinsh joined #puppet-openstack
21:09 dvorak let me find the doc, this is intentional
21:10 crinkle it's splitting on "\n" and joining with "\n" so even if that's the case i don't really understand why that would cause a problem
21:10 dvorak https://docs.python.org/3.2/library/csv.html
21:10 dvorak search for lineterminator
21:11 dvorak irb(main):002:0> "\r\n\r\n\r\n".split("\n").join("\n")
21:11 dvorak => "\r\n\r\n\r"
21:11 dvorak we'll have to add another trailing \n to the output
21:14 dvorak I'll get a review up
21:18 crinkle i'm not seeing \r when i print out response.inspect
21:21 dvorak I get it in our staging environment, and not in my dev environment
21:21 dvorak I'm wondering if it's a library issue
21:22 crinkle dvorak: what's the actual error you were seeing?
21:22 crinkle is it "Unclosed quoted field on line ..." ?
21:22 dvorak Error: /Stage[main]/Keystone::Roles::​Admin/Keystone_tenant[admin]: Could not evaluate: Unquoted fields do not allow \r or \n (line 60).
21:22 dvorak and Error: /Stage[main]/Ceilometer::Keystone::Auth/​Keystone::Resource::Service_identity[cei​lometer]/Keystone_service[ceilometer]: Could not evaluate: Unclosed quoted field on line 14.
21:23 dvorak this is in addition to the embedded newline issue
21:23 dvorak I'm inclined to change the code so that it assumes that the first double quoted line is where the real output starts
21:23 dvorak which fixes both issues
21:24 crinkle +1
21:26 dvorak I think response.sub(/(^|.*\n)"/, '')
21:28 crinkle what does the | do?
21:29 dvorak alternation so either the beginning of the string, or a newline
21:29 dvorak actually, I'm going to rewrite that to be less opaque
21:42 social wouldn't be more sane to change openstaclib to have --nowarnings or even more sane solution fix puppet so we get stderr?
21:48 dvorak social: yeah, except that right now we're using the distro packaged versions of openstack cli
21:53 mdorman joined #puppet-openstack
21:55 crinkle both of those would be great, but neither would fix the issue in the immediate future
21:55 social dvorak: ok what about using skip_lines of csv?
21:55 dvorak I'm not familar with it, it appears to be undocumented
21:57 social the issue with assuming that warnings happen on the begining of output is that that's putting faith into developers to not to throw anything to stderr after they start printing csv
21:57 openstackgerrit Clayton O'Neill proposed stackforge/puppet-keystone: Fixup CSV parsing from the openstack client  https://review.openstack.org/163992
22:00 vinsh joined #puppet-openstack
22:00 nextrevision joined #puppet-openstack
22:01 nextrevision left #puppet-openstack
22:02 crinkle yeah >.<
22:02 crinkle this is pretty frustrating, if we were using aviator this wouldn't be an issue
22:03 richm :-(
22:04 crinkle not that we should rehash that
22:04 richm is there something that should be fixed in osc?  I guess that doesn't help with platforms unlikely to get any updates any time soon
22:06 crinkle it's printing out warnings from the other client libraries http://paste.fedoraproject.org/190277/24870892/
22:06 crinkle it might not be openstackclient's fault, but the client library's fault
22:06 crinkle and puppet handles that poorly
22:37 rcallawa joined #puppet-openstack
23:39 tfhartmann joined #puppet-openstack
23:48 badiane_ka joined #puppet-openstack

| Channels | #puppet-openstack index | Today | | Search | Google Search | Plain-Text | summary