Monday, 2015-06-01

*** salv-orlando has joined #openstack-api00:51
*** salv-orlando has quit IRC00:56
*** salv-orlando has joined #openstack-api01:23
*** salv-orlando has quit IRC01:30
*** woodster_ has quit IRC01:40
*** woodster_ has joined #openstack-api02:37
*** salv-orlando has joined #openstack-api02:42
*** salv-orlando has quit IRC02:44
*** salv-orlando has joined #openstack-api03:04
*** salv-orlando has quit IRC03:11
*** woodster_ has quit IRC04:40
*** salv-orlando has joined #openstack-api04:49
*** salv-orlando has quit IRC05:05
*** salv-orlando has joined #openstack-api05:22
openstackgerritAlex Xu proposed openstack/api-wg: Add guideline for api microversion  https://review.openstack.org/18711206:24
*** fzdarsky has joined #openstack-api07:28
*** etoews has quit IRC08:10
*** etoews has joined #openstack-api08:12
*** cdent has joined #openstack-api08:56
*** e0ne has joined #openstack-api09:02
*** e0ne is now known as e0ne_09:48
*** e0ne_ is now known as e0ne09:50
*** openstack has quit IRC10:20
*** openstack has joined #openstack-api10:26
*** alex_klimov has joined #openstack-api11:02
*** fzdarsky has joined #openstack-api11:12
*** e0ne has quit IRC11:21
*** woodster_ has joined #openstack-api11:24
*** e0ne has joined #openstack-api11:30
*** salv-orlando has quit IRC11:51
*** salv-orlando has joined #openstack-api12:13
*** terrylhowe has joined #openstack-api13:09
*** annegentle has joined #openstack-api13:23
openstackgerritRyan Brown proposed openstack/api-wg: Add section on filtering  https://review.openstack.org/17746813:23
*** e0ne has quit IRC13:35
openstackgerritRyan Brown proposed openstack/api-wg: Add section on filtering  https://review.openstack.org/17746813:41
*** annegentle has quit IRC14:02
*** annegentle has joined #openstack-api14:03
*** sigmavirus24_awa is now known as sigmavirus2414:07
*** annegentle has quit IRC14:32
krotschecksdague: So, that API caching recommendation you put up, I'm starting to ponder whether I agree with miguelgrinberg that it should have some more specifics. At the very least, perhaps a link to http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html14:39
krotscheckPersonally, I'm really liking both the etag section and the last-modified header, since they can be implemented against openstack without too much hassle.14:40
ryansbyup, middleware is pretty great for that kind of change14:41
sdaguekrotscheck: ok, just getting back from a week of family time, so I haven't looked at those reviews14:41
krotscheckryansb: The only hiccup I see is that use of paste.ini might cause a race condition initializing oslo_config.14:42
krotschecksdague: NO worries, I'll add a comment.14:42
ryansbkrotscheck: implementation detail, methinks14:42
krotscheckryansb: It's an implementation detail until you try to propose a specification to add a middleware, and you get tons of political pushback :)14:44
* krotscheck might have just gone through that.14:44
ryansbyou sound a touch traumatized ;)14:45
sdagueheh14:45
krotscheckryansb: Well, yes. Not that I don't get what they're saying, but now I have two distinctly conflicting feature requests that I don't think are reconcilable ;)14:46
elmikoouch =(14:47
sdaguekrotscheck: so we can definitely add more specifics. I think the challenge is striking the line between guidelines and rewriting the upstream specs. I was erring on the side of "this is how I'd explain it in a hallway track at a summit"14:47
krotscheckOne group wants CORS support that can run standalone. The other wants CORS support that's automatically configured from keystone.14:48
krotscheckDoing both to me is a little tooo.... magic14:48
sdaguekrotscheck: which groups?14:48
sdaguesometimes that's the important part :)14:48
krotschecksdague: Ironic, and Keystone, respectively.14:48
sdaguedoes ironic want it stand along because they want to run without keystone?14:49
krotschecksdague: Yep. They want ironic to be entirely self-sufficient where necessary.14:49
sdagueso... that's where I kind of draw a line. I really think keystone should not be considered optional for OpenStack14:50
cdentwhat does "configured from keystone" mean in this context?14:50
sdagueyeh, I don't know what that means either, honestly :)14:50
krotscheckRight14:50
krotscheckSo, CORS request comes in with an Origin header.14:51
krotscheckCORS middleware asks keystone: Hey! is this one of your trusted dashboards?14:51
krotscheckKeystone gives thumbs up/down.14:51
cdentah, okay14:51
cdentso it's not so much "configured from" but "managed by"?14:51
krotschecksdague: Well, you can argue that with devananda :)14:51
krotscheckcdent: Yeah, I guess so.14:52
*** e0ne has joined #openstack-api14:52
* krotscheck is just here to advocate javascript. 14:52
cdent:)14:52
*** notmars has joined #openstack-api14:52
*** e0ne is now known as e0ne_14:52
cdentI would think a use-keystone-to-validate-dashboards is a reasonable option14:53
cdentespecially as turning it off could make some forms of testing easier14:53
cdent(nevermind the ironic use case)14:53
cdent(which may or may not be valid, dunno)14:53
sdagueyeh, it honestly seems pretty weird to me to design around the non keystone case14:54
cdentIt's pretty easy to imagine a keystone-less undercloud, isn't it?14:55
*** e0ne_ is now known as e0ne14:56
sdaguecdent: so then you created a 2nd auth system for your cloud admins?14:56
* cdent shrugs14:56
cdentI don't really know, I'm just flexing my imagination14:57
cdent(my imagination has HUGE biceps)14:57
elmikohehe14:57
sdaguekeystone is basically a REST API (and metadata add) for your existing auth system14:57
sdagueit seems weird to bypass that14:57
cdenttru14:58
elmikoi take it the ironic folks have a use case for a keystone-less stack?14:58
cdentwe're speculating at this point14:59
krotscheckSeems to me like Keystone's an abstraction layer that supports functionality that the auth systems it abstracts should "Just Support". i.e. it's a shim14:59
elmikook, just curious if this was academic or pragmatic14:59
krotscheckelmiko: I never did get a nailed down use case for that.14:59
krotscheckelmiko: Might be good to ask in the ironic channel14:59
elmikok14:59
sdagueelmiko: they want to do a thing. We don't entirely know why. That thing is going to cause extra work for other efforts, so probably should figure that out.15:00
elmikokrotscheck: i'm still trying to fully understand the problem space here15:00
elmikosdague: agreed on more understanding15:00
*** Guest83839 has joined #openstack-api15:00
krotscheckI just want everything to support OpenId Connect and leave it at that.15:01
krotscheck:)15:01
cdent\o/15:01
elmikonice15:02
*** kfox1111 has quit IRC15:04
ryansbI kind of doubt users would want a keystoneless UC15:05
ryansbsince authz/authn is still important for those services, even though they may not have as many tenants15:05
krotscheckryansb: I doubt that users would want a UC without authentication, whether that is provided by keystone or something else.15:05
cdentI suspect the driver for this stuff is bifrost15:05
ryansbespecially if they use Heat for provisioning ironic nodes, and want heat stack-domain users for cloudinit/cfntools to run well15:06
krotscheckryansb: They're not touching heat.15:06
ryansbhm15:06
* krotscheck knows that much15:06
krotscheckryansb: I belive it's the other way around. Ironic can be a driver for nova, and heat uses nova to do things, which may - depending on the driver - be on bare metal.15:07
* krotscheck might not have that entirely correct.15:08
sdaguecdent: it is15:08
sdagueanyway, this might be a great instance to get an ML thread going, because the implications touch a lot of efforts15:09
sdagueand corner conversations inside irc channels probably won't get us anywhere useful15:09
krotschecksdague: Are you sure? I was under the impression that Ironic's design philosophy is very clearly "We don't depend on anyone". Much to my chagrin, since I'm trying to convince them that glance is more or less necessary to make the service usable.15:09
ryansbtruth15:09
elmikosdague: +115:10
krotscheckRighto, so who wants to start that?15:10
* cdent listens to the crickets15:13
cdentWhich issue is it that we are trying to address here? We seemed to leap from caching to CORS middleware in a way I didn't quite understand15:13
sdaguekrotscheck: I don't know. I do know that "uses keystone" is kind of table stakes for big tent. Otherwise it's not really clear it's OpenStack, it's some other software that's drafting on OpenStack brand.15:14
krotscheckWell, there are two issues.15:15
sdaguecdent: I think the things is CORS support means the client is Chrome, which has very different caching semantics than python requests15:15
krotscheckWhoooathere. Caching is a different topic altogether. We're just talking API-to-API communication here.15:16
krotscheckBrowser's haven't even come into the picture yet.15:16
sdaguekrotscheck: right, fair15:16
sdagueI'm trying to get ahead of that one though15:16
sdaguebecause getting servers to do cache control sanely is going to take a while15:16
krotscheckProblem 1: CORS middleware, should it have an implicit dependency on keystone or not? Upside: Easy (zero) configuration. Downside: Can't run standalone.15:16
krotscheckProblem 2: Can we support both in one middleware? If not, should we provide paste.ini options? If so, there's an Order-of-operations problem with initializing oslo_config.15:17
krotschecksdague: As far as browser cache control goes, I can quite happily teach our request abstraction to use etags and if-last-modified headers rather than the cache-expiry settings15:18
cdentit's not an either or15:20
sdaguekrotscheck: yeh, sorry, still getting my brain back up to speed. I'm not sure I understand what that would mean vs. actually getting the servers to do the right things internally and send those headers appropriately. I'm a little concerned that if we go doesn the "solve cache management in middleware" we actually lose a lot of correct info.15:20
cdent(cache control, that is)15:20
sdaguebut, again, I've been out for a week, and brain is still rewrapping on openstack things :)15:20
cdentsdague++15:20
cdentI know how that can be. I'm still resetting my bogosity filters.15:21
elmikolol15:21
krotschecksdague: I think it's unreasonable to assume that any of the API teams are going to care about sending the correct data.15:21
krotscheckOr implementing it internally15:21
cdentsince my bogosity filters are not yet set I'll say: then they shouldn't be writing apis15:22
krotscheckBecause it's a complex problem, and it's a lot of work to support, get right, and frankly everyone's going to want to do their own version of this.15:22
krotscheckAssuming that anyone's willing to front the actual development time.15:22
cdentthere it is15:23
krotscheckcdent: Yep15:23
krotscheckSo here's the thing.15:23
krotscheckI am willing to do some work on this. But I have zero desire to become an expert at the nuances of _every_ single OpenStack API.15:24
cdentvery fair15:24
krotscheckSo if I was going to build this, I'd do two things.15:24
cdent(which "this"?)15:24
krotscheck(caching)15:24
krotscheck1- Etag middleware, that md5's the response body and modifies the response if the approriate headers are sent.15:25
krotscheck2- Last-modified middleware, which assumes that everyone's using oslo_db's 'created_at' and 'modified_at' fields.15:25
krotscheck....and acts accordingly.15:25
krotscheck(urm, 3 things)15:26
krotscheck3- Cache-Expiry middleware, which assumes oslo config and just sets the expiry time to something from a config file.15:26
krotscheckIf there's an appropriate spec that will back me up that I can use to strongarm api teams into applying these things, great.15:27
krotscheckOr to apply pressure to come up with their own solution.15:27
cdentI don't think 1 can work unless you have a tool to normalize dict-based representations15:28
cdentwhich is why I think doing it as middleware is fraught with impossibilities15:28
krotscheckcdent: Yeah, there'd have to be attribute sorting.15:28
krotscheckAnd that might be processor intensive.15:28
krotschecki.e. nontrivial impact to performance.15:28
cdentI reckon etag calculation is very implementation dependent because you can have representations of the same thing which are structurally different but which should have the same etag15:29
cdentand then there's the vary header15:30
krotscheckcdent: Well, we could just do the same with 1 as we are with 2 and just hash the modified_date.15:31
krotscheck....and assume that the api's are sane.15:32
* krotscheck isn't sure that's a thing we can assume.15:32
*** notmars has quit IRC15:32
cdentI don't know, but suspect not15:32
cdentI think these are the sorts of questions that a mailing list posting might ask, around the topic of "is it possible to generically manage etags"15:32
cdentand see what people say15:32
*** subscope has joined #openstack-api15:37
sdagueanyway, I have a few more near term things I need to try to get moving this week that I committed to at summit. I think on the etags from middleware thing I was thinking slightly differently. The issue I was thinking about was the GET 404 being cachable, but it might have occurred on a resource that did not yet exist (but could later) in which case the server really needs to indicate that fact (middleware can't solve it)15:40
sdaguein doing a little more etags refreshing, I do agree there could be a middleware path there, though honestly I'm not convinced it's going to help much in our model because it would mostly just save the wire time as the server would need to figure out if the resource was equiv15:42
sdagueenough so, that I'd say punting all of etags to M cycle, because I think there is lots of other things to sort first15:42
krotschecksdague: Thankfully, I don't care about what you silly server people care about :)15:42
sdague:)15:43
sdaguekrotscheck: I mostly care so that your life is easier :)15:43
krotscheckHonestly though, I want to get the protocol established. Once we say: Hey, this is how we communicate cached resources, each team can evolve how they see fit.15:43
krotscheckAnd middleware seems to be the quickest way to "Here's the language we speak".15:43
* cdent rewrites openstack to use a dht p2p-managed event pool15:43
krotscheckImplement everything in node!15:44
* krotscheck actually dislikes node on the server.15:44
sdagueok, well, good chat. Now I need to go find food. Back in a while.15:45
elmikokrotscheck: you're on a heavy javascript vibe today ;)15:45
*** e0ne is now known as e0ne_15:50
cdentelmiko: someone said to me today: you don't give yourself enough credit, understanding [this thing we were talking about] requires a lot of frontend javascript knowledge15:50
cdentI felt ashamed15:50
cdentand wanted to hide15:50
cdentnot really15:51
cdentbut it does make me wish I could archive stuff15:51
*** e0ne_ is now known as e0ne15:51
elmikoLOL15:54
*** notmars has joined #openstack-api15:56
*** subscope has quit IRC16:07
*** Guest83839 has quit IRC16:08
*** annegentle has joined #openstack-api16:09
*** annegentle has quit IRC16:14
*** alex_klimov has quit IRC16:16
krotscheckelmiko: That's what I get paid for :)16:17
* krotscheck is actually serious. Making OpenStack more javascript friendly is his job.16:18
cdentThat should have a good title16:18
krotscheckcdent: "Glutton for Punishment"16:19
krotscheckAt least that's the working title16:19
cdentSenior Glutton for Punishment, sir16:20
*** Apoorva has joined #openstack-api16:22
elmikokrotscheck: nice! i had no idea =)16:25
krotscheckelmiko: Why do you think I'm harping so hard on improving API things :)16:28
cdentdiverse client environment makes better apis16:29
cdentthis way in which stuff is written to blessed clients is _horrible_16:29
elmikokrotscheck: i thought you just wanted to help improve the API =)16:30
sigmavirus24== cdent16:30
sigmavirus24elmiko: and here krotscheck was being selfish all along ;)16:30
*** notmars has quit IRC16:30
krotscheckelmiko, sigmavirus24: What cdent said :). We'll all be happier if API's behave according to standards.16:31
elmikolol!16:31
elmikokrotscheck: agreed16:31
krotscheckAnd if me being selfish makes the world better, then is it really being selfish? #circularreasoning16:32
*** salv-orl_ has joined #openstack-api16:39
*** salv-orlando has quit IRC16:42
*** fzdarsky has quit IRC16:42
elmikohehe16:43
sigmavirus24krotscheck: scratching an itch is the foundation of oss =P16:47
krotschecksigmavirus24: Even if I do it with a flamethrower?16:47
sigmavirus24yep16:48
*** e0ne has quit IRC16:55
*** salv-orl_ has quit IRC16:56
*** salv-orlando has joined #openstack-api16:57
*** notmars has joined #openstack-api17:09
*** annegentle has joined #openstack-api17:10
*** annegentle has quit IRC17:17
*** annegentle has joined #openstack-api17:21
*** notmars has quit IRC17:23
*** Apoorva has quit IRC18:56
*** annegentle has quit IRC19:00
*** e0ne has joined #openstack-api19:10
*** cdent has quit IRC19:17
*** e0ne has quit IRC19:24
*** annegentle has joined #openstack-api19:33
*** annegentle has quit IRC19:35
*** annegentle has joined #openstack-api19:35
*** salv-orlando has quit IRC19:49
*** Apoorva has joined #openstack-api19:50
*** alex_klimov has joined #openstack-api19:51
*** annegentle has quit IRC19:51
*** salv-orlando has joined #openstack-api20:07
*** annegentle has joined #openstack-api20:19
*** fzdarsky has joined #openstack-api20:20
*** notmars has joined #openstack-api20:41
*** salv-orlando has quit IRC20:50
*** notmars has quit IRC20:56
*** notmars has joined #openstack-api21:01
miguelgrinbergkrotscheck: wondering if you had any discussions regarding a caching middleware. I'm thinking about the API-WG guideline, and it really would make it a lot easier to briefly describe the best practices around caching and then point at a middleware that implements the caching baseline.21:24
*** notmars has quit IRC21:37
*** salv-orlando has joined #openstack-api21:50
*** e0ne has joined #openstack-api21:51
*** annegentle has quit IRC21:51
*** openstackgerrit has quit IRC22:07
*** openstackgerrit has joined #openstack-api22:07
krotscheckmiguelgrinberg: ALl I got from the oslo team was: Sure! Who's the customer?22:07
krotscheckmiguelgrinberg: Everything else was discussed here in channel.22:07
miguelgrinbergkrotscheck: okay, I guess that's better than a no22:08
*** annegentle has joined #openstack-api22:09
krotscheckmiguelgrinberg: Well, they seemed pretty happy when I said it'd be part of caching guidelines proposed by the API-WG22:14
elmikokrotscheck: +122:16
*** annegentle has quit IRC22:16
lifelesskrotscheck: miguelgrinberg: cache control middleware, or caching-content middleware?22:22
*** e0ne has quit IRC22:22
miguelgrinberglifeless: cache control22:23
miguelgrinbergkrotscheck: I looked all over for something already built that is close to what we need, but haven't found anything.22:24
*** fzdarsky has quit IRC22:28
lifelessmiguelgrinberg: better to have a library for it than everyone rolling-their-own-buggy versions22:28
lifelessso sure, what do you need from oslo for that?22:29
miguelgrinberglifeless: the concern is that once we enable CORS and start seeing browser clients we'll have to make sure we control caching22:30
miguelgrinbergso the idea is to have a middleware that adds safe caching22:30
miguelgrinbergthis would include generating an etag and also responding to conditional requests22:31
lifelessmiguelgrinberg: I don't understand why that becomes a concern22:31
lifelessmiguelgrinberg: its already a concern22:31
miguelgrinbergof course, but browsers are pretty aggressive about caching, other clients are not22:32
miguelgrinbergso opening access to browsers may expose existing problems, cause by us not doing anything to control caching from the server22:33
lifelessI haven't done an audit of our responses22:34
lifelessbut - do they have datestamps?22:34
miguelgrinbergI don't think so22:34
lifelessI don't have a devstack running right now22:36
miguelgrinbergI believe in most cases responses have no caching headers, so what clients can do with that is pretty open22:36
lifelessso no22:36
miguelgrinbergthis isn't well defined in the HTTP RFC, but there are some response status codes that are cacheable by default22:36
lifelessI'm going to differ here22:37
lifelessits very well defined22:37
lifelessgoing back to 1.0 even, the idea of clockless caching was considered22:37
lifelesswith no explicit caching metadata, RFC 7234 section 4.2.2 applies22:38
miguelgrinbergokay, let me find that22:39
lifelessimplementors are allowed considerable latitude in the heuristic they choose22:39
lifelessbut22:39
lifelesschromium doesn't set a freshness without LMT22:40
lifelessso we need to check if there is an LMT; if there is, it uses 10% of now-lmt22:40
lifelessI haven't checked firefox, but from memory its similar22:41
lifelesse.g. really conservative given that if we're generating dynamic LMT's (which we probably are), and clock skew isn't an issue (because it causes huge token expiry problems so we know operators have that sorted in general)22:41
miguelgrinbergI believe our responses (most of them at least) have no LMT or any other piece of information that can be used for caching22:42
lifelesswe're looking at cache times in the subsecond region - e.g. uncachable22:42
lifelessmozilla is also 10% of date-lmt, if lmt, and nothing if no lmt (lmt is the fallback of last resort)22:43
miguelgrinbergso I think the question is what these caches do when there's no hints of freshness/age22:44
lifelessthey don't cache22:44
miguelgrinbergthat's the ideal, but that's the part that isn't well defined in the RFC, at least that's my impression22:46
lifelessso, I don't mean to be difficult, and if you want to spend a bunch of time drilling into this we can22:46
lifelessbut I've just cross checked the firefox caching faq too22:46
lifelesshttps://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ22:47
lifelessand its also consistent with my assertion22:47
lifelessI can also just about quote from memory the squid internals for this22:47
lifelessI'm also not sure why we're ratholing here - I asked what help you needed from oslo to move your proposal forward22:49
elmikothis is some deep caching/browser talk, thanks =)22:50
lifelessI think we'll clearly need a spec, since the inputs to mark a response as cachable are non-trivial for APIs that weren't designed with that in mind (and ours weren't)22:50
miguelgrinbergAt this point we are just discussing caching, so there are no immediate needs. The possibility of having a middleware that adds caching headers is the potential oslo involvement.22:50
lifelesswithout some cross project analysis I'd also hesitate about the idea of responding to conditional requests: the conservative thing to do is to assume that all requests need to hit the API internals22:51
*** openstackgerrit has quit IRC22:51
elmikomiguelgrinberg: agreed, when talking about middleware best to consult with the oslo team22:51
*** openstackgerrit has joined #openstack-api22:51
lifelessthat is, if a client has a fresh response (once we figure out how to determine a sensible cache lifetime for /any/ response) then the client uses it, but if it asks to validate, we always give it a new response22:52
lifelessmiguelgrinberg: ok, sure.22:53
miguelgrinbergI feel we are getting into very specific implementation details, but if the server decides the client has a fresh response it can say "yeah, use what you have" and save some bandwidth.22:53
miguelgrinbergthis is easy to do with etags22:53
miguelgrinbergthe API internals have to be hit anyway, because that's how you determine if the client has a fresh response22:53
lifelessmiguelgrinberg: anyhow, I'm very confident, if we're emitting no LMT or any explict caching headers, that browers won't be caching22:54
lifelessmiguelgrinberg: so you can in principle save a bunch of the response calculation in some cases, if your validator is well glued into the backend22:54
lifelessas a trivial example of this consider apache's etags on static content, derived from file system metadata22:55
lifelessrather than hashing the entire body22:55
lifelessall that said, I'm happy to help; I just don't think the CORS work needs to block in any way on caching middleware22:56
miguelgrinberglifeless: if we are all convinced that current responses are not at risk of getting cached, then I'd say we don't need to worry about a caching middleware for time being22:57
miguelgrinbergSo what I can do is add some quick & dirty CORS support to some of the APIs and then test them in a bunch of browsers, including closed source ones to see what happens.22:58
lifelessremember too that authenticated content is noncachable by default22:58
lifelessgood idea, testing++ :)22:58
lifelessand ssl, which I'd expect all deployments to be using22:59
lifelessso please be sure to test with ssl!22:59
miguelgrinbergre "authenticated content", browsers are not going to consider X-Auth-Token22:59
lifelessindeed22:59
miguelgrinbergso as far as they are concerned we are not doing auth. Or am I wrong?22:59
lifelessWe should really fix up keystone to use the bearer token specs that are around these days23:00
lifelessbut EONETHINGATATIME23:00
miguelgrinberglifeless: and of course SSL needs to be tested as well23:00
miguelgrinbergso I think we are not ready to write an API-WG proposal on caching yet :)23:01
miguelgrinberglifeless: thanks for your help23:02
lifelessnp, hope it turns out well :)23:04
lifelessspeaking of CORS23:09
lifelesskrotscheck: reviewed the cors spec per your request.23:09
*** agentle1 has joined #openstack-api23:10
miguelgrinberglifeless: unrelated to needing this or not as far as CORS, would you guys be open to a proposal/spec on a middleware that does auto-etag support? I've implemented that in the past (not openstack related), the nice thing is that a default implementation can be done without knowledge of the content, so it can go in a generic middleware.23:11
elmikomiguelgrinberg: i've seen you mention etags several times now, is there an rfc i can read up on that topic?23:11
miguelgrinbergelmiko: sure, it's in the HTTP RFC, let me look up which one has it23:12
elmikothink i found the old one in 261623:12
*** sigmavirus24 is now known as sigmavirus24_awa23:12
miguelgrinbergelmiko: https://tools.ietf.org/html/rfc723223:13
miguelgrinbergconditional requests23:14
elmikomiguelgrinberg: awesome, thank you =)23:14
miguelgrinbergthe tl;dr is that each response comes with a unique ID (the etag). Then the client can send a conditional request to the server passing a previously cached etag from a response. If the etag is still valid the server can reply with a "use your cached copy" response.23:15
miguelgrinbergand you save bandwidth that way23:15
elmikonice23:15
elmikotake care miguelgrinberg, i'm off for some dinner23:17
miguelgrinbergelmiko: have a good one23:17
lifelessmiguelgrinberg: I'd be ok with such a spec, sure.23:28
*** agentle1 has quit IRC23:30
*** salv-orlando has quit IRC23:33
*** alex_klimov has quit IRC23:40
*** agentle1 has joined #openstack-api23:49
*** agentle1 has quit IRC23:49

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!