Wednesday, 2014-11-26

*** malini1 has joined #openstack-zaqar00:08
*** achanda has quit IRC00:08
*** malini has quit IRC00:09
*** achanda has joined #openstack-zaqar00:26
*** achanda has quit IRC00:37
*** kgriffs is now known as kgriffs|afk00:44
*** davideagnello has quit IRC00:50
*** achanda has joined #openstack-zaqar00:57
*** davideagnello has joined #openstack-zaqar01:05
*** amalagon has joined #openstack-zaqar01:06
*** achanda has quit IRC01:22
*** achanda has joined #openstack-zaqar01:31
*** achanda has quit IRC01:35
*** X019 has joined #openstack-zaqar01:41
*** malini1 has left #openstack-zaqar01:42
*** kgriffs|afk is now known as kgriffs01:45
*** X019 has quit IRC01:52
*** kgriffs is now known as kgriffs|afk01:56
*** vipul has quit IRC02:33
*** vipul has joined #openstack-zaqar02:37
*** kgriffs|afk is now known as kgriffs02:59
*** fifieldt has joined #openstack-zaqar03:01
*** vkmc has quit IRC03:12
*** echevemaster has joined #openstack-zaqar03:48
*** sgotliv has joined #openstack-zaqar04:07
*** achanda has joined #openstack-zaqar04:12
*** sgotliv has quit IRC04:16
*** flwang1 has quit IRC04:27
*** achanda has quit IRC04:30
*** amalagon has quit IRC05:43
*** sgotliv has joined #openstack-zaqar06:03
*** amalagon has joined #openstack-zaqar06:07
*** echevemaster has quit IRC06:33
*** sgotliv has quit IRC06:50
*** sgotliv has joined #openstack-zaqar06:50
*** fifieldt has quit IRC07:16
*** exploreshaifali has joined #openstack-zaqar07:18
*** achanda has joined #openstack-zaqar07:31
*** achanda has quit IRC07:36
openstackgerritFlavio Percoco proposed openstack/zaqar-specs: Define a wire protocol for non-REST APIs  https://review.openstack.org/12242507:45
flaper87flwang: pon07:49
flaper87flwang: pong07:49
openstackgerritMerged openstack/zaqar-specs: Define a wire protocol for non-REST APIs  https://review.openstack.org/12242507:51
exploreshaifalihey flaper87 goood morning :)07:54
flaper87exploreshaifali: hey hey07:56
flaper87exploreshaifali: how are you doing?07:56
openstackgerritMerged openstack/zaqar-specs: Add a persistent transport alternative  https://review.openstack.org/13456707:56
openstackgerritMerged openstack/zaqar-specs: Spec for notification service  https://review.openstack.org/12919207:56
exploreshaifaliflaper87, trying to figure out  reason for `AssertionError: True is not false`07:56
exploreshaifalioccuring in latest patch :)07:57
flaper87exploreshaifali: let me take a look07:59
exploreshaifaliflaper87, https://review.openstack.org/#/c/134910/07:59
flaper87exploreshaifali: https://git.openstack.org/cgit/openstack/zaqar/tree/zaqar/queues/storage/utils.py#n4608:04
flaper87you need to fix that08:04
flaper87FWIW, we're going to get rid of that function08:04
flaper87but you'll have to fix it until we do08:05
flaper87:(08:05
exploreshaifaliflaper87, okay ! Thanks :)08:08
exploreshaifaliflaper87, btw how you caught that the problem is with storage/utils.py ?08:08
exploreshaifalibecause the problem is in *tests/unit/common/storage/test_utils.py* that is why ?08:10
flaper87exploreshaifali: because the error is in this line: self.assertFalse(utils.can_connect(uri, conf=self.conf))08:11
flaper87`can_connect` is defined in storage/utils.py08:11
exploreshaifaliflaper87, all right, got it :)08:12
exploreshaifaliflaper87, Thanks a looot !!08:12
exploreshaifali:)08:13
flaper87exploreshaifali: hehe, np girl! I like the way the patch is moving. Great work.08:13
exploreshaifaliflaper87, yo yo!!!08:14
*** achanda has joined #openstack-zaqar08:33
*** achanda has quit IRC08:48
flaper87exploreshaifali: heeeeeey08:49
flaper87:D08:49
exploreshaifalixD08:49
*** flwang1 has joined #openstack-zaqar09:28
openstackgerritShaifali Agrawal proposed openstack/zaqar: Split Control and Data planes of Storage layer  https://review.openstack.org/13491011:08
*** X019 has joined #openstack-zaqar11:09
*** exploreshaifali has quit IRC11:20
*** malini has joined #openstack-zaqar11:30
*** vkmc has joined #openstack-zaqar11:34
vkmcgood morniing11:37
kragnizvkmc: morning!11:40
kragniz\o/11:40
vkmcheeeeey kragniz \o/11:40
*** flwang1 has quit IRC11:56
*** malini1 has joined #openstack-zaqar12:12
*** malini has quit IRC12:14
*** X019 has quit IRC12:23
flaper87vkmc: goooooooood morning :)12:24
vkmc:)12:40
* vkmc sees specs approved 12:40
vkmctime to code!12:41
flaper87vkmc: yeah, they all landed12:42
flaper87w000t12:42
flaper87I gotta update mines and keep coding12:42
vkmcflaper87, what are you working on right now? :)12:43
vkmcI have to dig on the cross api spec, without that we don't have ws >.>12:43
* flaper87 is working on making others work12:43
vkmcthat sounds like you are a pm12:45
flaper87vkmc: OMFG, you just called me hipster-pm.....12:47
flaper87that's insulting12:47
flaper87:D12:47
vkmcflaper87, you are calling yourself that12:47
vkmchipster... yes you are12:47
flaper87no no no no no no12:48
flaper87NOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO12:48
vkmchahaha12:49
vkmcbut its cool fla, a lot of folks try hard to be hipster12:49
vkmcyou are a natural one12:49
vkmcdon't fight the mustache12:49
vkmcembrace the mustache12:49
vkmcHAHA12:49
flaper87http://s.pikabu.ru/images/previews_comm/2013-04_4/13661252013664.jpg12:49
vkmcI need a tshirt with that12:49
flaper87LOL12:49
* flaper87 pictures a dude embracing a mustache12:50
vkmclool12:50
vkmcdid you see this blog? http://www.artofmanliness.com/12:50
vkmcah internet <312:51
kragnizvkmc: haha12:56
vkmckragniz, you knew it? :) haha12:56
*** exploreshaifali has joined #openstack-zaqar13:04
exploreshaifalihi guyz13:07
exploreshaifalivkmc, \o13:07
*** X019 has joined #openstack-zaqar13:07
vkmchiiiiiiiii exploreshaifali o/13:08
vkmchow are you today?13:08
exploreshaifali\o/13:08
exploreshaifalivkmc, eating loots of chocolates ;)13:09
exploreshaifali5 star at present13:10
* vkmc looks exploreshaifali with crazy eyes13:10
vkmcchocolates you said?13:10
vkmcnom nom13:11
exploreshaifaliyes... vkmc :D13:11
kragnizI ate all the chocolate I was hiding under my desk :(13:11
exploreshaifalihttp://www.google.co.in/imgres?imgurl=&imgrefurl=https%3A%2F%2Fgypsyfoods.wordpress.com%2F2012%2F06%2F22%2Frecipe-29-5-star-cake%2F&h=0&w=0&tbnid=ZAIB-LXVXgCPLM&zoom=1&tbnh=194&tbnw=259&docid=t5UpQpve3ITYjM&tbm=isch&client=ubuntu&ei=jtF1VL6XLNfluQTN9YCgCg&ved=0CA0QsCUoAw13:12
exploreshaifalitooo big url.. didn't realized :P13:12
vkmcthat looks so good13:12
vkmcnp13:12
exploreshaifalikragniz, no worries we will have more13:13
exploreshaifalivkmc, how are you ?13:14
exploreshaifaliand kragniz what about you ?13:14
kragnizexploreshaifali: I'm rather good!13:14
vkmcI'm doing good, reading some white papers and setting up RedStack13:14
vkmcand you?13:14
flaper87kragniz: you didn't hid it well enough13:14
kragnizexploreshaifali: currently annoying flaper8713:14
flaper87A LOT13:15
flaper87just FYI13:15
flaper87:P13:15
exploreshaifalikragniz, hahaha yes on glance channel13:15
kragnizflaper87: FOR THE GREATER GOOD!13:15
flaper87yeah, yeah.... who told you making users happy is the greater good13:15
flaper87???13:15
flaper87money is, once you sell this shit, you can run away.13:15
flaper87:P13:15
* flaper87 hides13:15
exploreshaifalixD13:16
flaper87jokes apart, I do agree with your and jokke's POV now13:16
kragnizhaha13:16
flaper87it makes sense13:16
kragnizflaper87: <313:16
*** dynarro has joined #openstack-zaqar13:26
*** dynarro_ has joined #openstack-zaqar13:26
*** tmu has quit IRC13:41
*** tmu has joined #openstack-zaqar13:48
*** jchai has joined #openstack-zaqar13:52
vkmcflaper87, can you update me on the status of https://blueprints.launchpad.net/zaqar/+spec/cross-transport-api-spec?13:59
vkmcwhen you have a moment13:59
*** sriram has joined #openstack-zaqar14:04
*** sriram has joined #openstack-zaqar14:04
*** exploreshaifali has quit IRC14:15
*** mpanetta has joined #openstack-zaqar14:24
flaper87vkmc: mmh, you should have rights to do that14:27
flaper87don't you have them?14:27
vkmcI didn't mean that14:27
vkmcI was asking you to give me details on the implementation of that14:28
vkmcI cannot find reviews or something else apart from an etherpad14:28
flaper87vkmc: ah damn, sorry14:29
flaper87:(14:29
flaper87I misunderstood14:29
flaper87ok14:29
vkmcflaper87, no worries :)14:29
flaper87so, there's actually not much done14:30
* flaper87 gets some links14:30
vkmcfirst of all, do we really need that?14:30
vkmcthe PoC is based on Zaqar as is14:30
flaper87vkmc: you mean the cross-api thing?14:31
vkmcyep14:31
flaper87vkmc: I think we do14:33
flaper87the point of that bp is to create something like we have in the client but for the server14:33
flaper87https://github.com/openstack/zaqar/blob/master/zaqar/queues/api/v1_1/request.py14:33
flaper87just a way to get requests in a dict-like object, validate them and process them14:33
flaper87this acts like as the validator https://github.com/openstack/zaqar/blob/master/zaqar/common/api.py14:34
flaper87vkmc: does that make sense?14:35
vkmcflaper87, it does yeah14:36
vkmcwhich was the blockers you find on implementation?14:36
vkmcmaybe cpallares could give me more details on that so I can (try to) carry on with it14:36
vkmcI'm reading this https://etherpad.openstack.org/p/cross-transport-api-spec14:37
flaper87vkmc: there were no real blockers, TBH14:39
flaper87I mean, the main blocker was with the original idea14:39
flaper87the original idea was to replace *all* transports with this cross-api thing14:39
flaper87but it'd have been aweful to migrate the wsgi transport14:39
flaper87because we'd have had to duplicate exceptions raising etc14:39
vkmck14:40
vkmcyeah14:40
flaper87if we leave the wsgi transport as is, as a reference, we're good to make this more specific to lower level protocols14:40
vkmcthe idea of the cross-api spec is to avoid duplication by setting a common api for all transports to communicate with the storage14:42
vkmcwhy you say that migrating wsgi would make us to duplicate code?14:42
vkmcI mean, I know it will be painful to do that14:42
vkmcbut I'm not sure why duplication is going to happen14:43
*** ametts has joined #openstack-zaqar14:44
flaper87vkmc: it;d make us duplicate exceptions14:46
flaper87for example14:46
flaper87in that cross-api thing we'll have to have "common" exceptions and we'd raise something like: exception.QueueDoesNotExist14:46
flaper87however, we'll still have to have views in the wsgi transport that catch these exceptions and re-raise the proper HTTP exception14:47
flaper87that catching-re-raising is actually part of the REST api definition14:47
flaper87which means we wouldn't be able to completely rely on the cross-api thing14:47
flaper87not for the wsgi transport14:47
vkmcmakes sense14:47
flaper87in the case of other transports, we can just serialize the exception14:47
flaper87but it can be done in the cross-api implementation14:48
vkmcall right14:49
vkmcthanks fla :)14:49
*** exploreshaifali has joined #openstack-zaqar15:19
*** sriram has quit IRC15:54
*** sriram has joined #openstack-zaqar15:54
*** cpallares has joined #openstack-zaqar16:16
openstackgerritDoraly Navarro proposed openstack/python-zaqarclient: Gets 'pool' data if the resourse exists  https://review.openstack.org/13739816:40
openstackgerritFlavio Percoco proposed openstack/zaqar-specs: Improve storage capabilities  https://review.openstack.org/12653116:43
flaper87vkmc: ^16:43
flaper87could you sanity check the Pool and Flavors section16:43
flaper87I updated it based on our discussion at the meeting16:44
*** amalagon has quit IRC16:44
openstackgerritFlavio Percoco proposed openstack/zaqar-specs: Make FIFO guarantee optional  https://review.openstack.org/12598616:45
flaper87vkmc: and ^16:46
vkmc:o16:51
openstackgerritDoraly Navarro proposed openstack/python-zaqarclient: Gets 'pool' data if the resource exists  https://review.openstack.org/13739816:51
vkmcI'll review after lunch :)16:52
flaper87vkmc: enjoy16:53
*** echevemaster has joined #openstack-zaqar16:54
kgriffsreviewed17:17
* kgriffs goes back to lurking17:17
flaper87kgriffs: hey man :D17:34
flaper87thank you17:34
flaper87kgriffs: https://review.openstack.org/#/c/126531/3/specs/kilo/storage-capabilities.rst,cm17:34
flaper87what do you mean with "What should happen when a driver specified for the flavor does not support the desired capabilities"?17:35
flaper87The driver is not specified for the flavor17:35
flaper87I mean, drivers are set per pool17:36
kgriffsoh, right17:36
kgriffslet me see...17:36
kgriffsso when I create a flavor, I associate it with one or more pools, right?17:36
* kgriffs needs to go back and RTFM17:36
flaper87kgriffs: with 1 pool group17:37
*** echevemaster has quit IRC17:37
flaper87kgriffs: one more question re DELETE_MSG and CLAIM_MSG17:37
flaper87I didn't add thsoe because they have a direct impact on the API17:38
flaper87What should the API do if the store doesn't support message deletion ?17:38
flaper87no-op ?17:38
flaper87How do we comunicate that back to the user?17:38
flaper87etc17:38
kgriffsso, my thought was17:38
flaper87Do you think that's something we should revisit later? or should we do it now?17:39
kgriffsfirst, you don't expose those endpoints in JSON-home (or swagger or whatever else we use now or in the future)17:39
kgriffsand second, the API layer returns a graceful error17:39
kgriffshow about this17:39
*** jchai has quit IRC17:40
flaper87wait, how can you do that in advance?17:40
flaper87that's a per-flavor thing17:40
kgriffsoh, good point17:41
kgriffshmmm17:41
kgriffswell, one thing we said at the lunch meeting with Keith was that perhaps we don't need to bend over backwards to support this, but at a minimum the process shouldn't crash and burn with an unhandled or hard-to-diagnose error17:41
kgriffsso what I was thinking is...17:42
kgriffsis there an error that, say, a Kafka driver could raise when an operation is not supported that would be translated to a reasonable response by the API layer?17:42
kgriffsand that we could log to make it easy for an ops person to figure out what went wrong if someone sends in a support ticket?17:43
flaper87kgriffs: I think we can come up with something17:43
flaper87I'm more worried about the API than the storage layer17:43
flaper87other than that, I think returning a nice error back to the user is fine17:44
flaper87as long as the client is smart enough to make user's life simple17:44
flaper87as in, Client(..., ..., **dict(ignore_interoperability=True))17:44
flaper87That'd make the client catch missing features and just move on17:45
kgriffsright17:45
flaper87Queue('my-kafka-queue').claim() <- this won't raise any exception17:46
flaper87or it probably should17:46
flaper87I mean, if you're creating an instance of a kafka queue, you should probably know what's supported17:46
kgriffshmm17:46
*** sriram has quit IRC17:47
kgriffsyeah, the trouble is the client can't know what is supported unless it can query the supported operations/endpoints for a given flavor17:47
kgriffsi think we have a couple stepping stones at least17:48
flaper87if we raise a specific error for unsupported features, we can know whether the feature is supported or not17:48
flaper87We could also have a per-queue home17:49
flaper87:/17:49
kgriffsyeah, that could be a first step17:49
kgriffs(raise a specific error)17:49
kgriffssecond step would be to figure out a way to make what is supported discoverable17:49
flaper87right17:49
kgriffsi mean, with capabilities you have that in some sense17:49
flaper87yeah17:50
kgriffsbut we haven't really been thinking of capabilities in terms of this operation is supported or not17:50
flaper87right17:50
flaper87ok, lets do that17:50
*** dynarro has quit IRC17:50
*** dynarro_ has quit IRC17:50
flaper87I'll add claims as a capability, I think deletion can be a no-op for cases like kafka17:51
kgriffsif we want to be RESTful then the API needs to be self-describing somehow. so a second iteration on this would be to figure out how to do that17:51
kgriffsyou do need a way to probe operations to see if they are supported17:51
flaper87yup17:51
kgriffswhether that is just trying it and getting an error status code, or some kind of hypermedia approach17:51
*** mpanetta has quit IRC17:53
flaper87kgriffs: btw, I think we have a no so nice bug in flavors17:54
flaper87kgriffs: Queue's are lazy, right?17:54
flaper87now17:54
flaper87If I post a message to a queue that doesn't exist, a new queue will be created on the default pool. If I then decide to use a flavor for that queue and I set the flavor by updating queue's metadata, I'll change the storage for that queue17:55
flaper87and messages posted on the other pool will be lost17:55
*** amalagon has joined #openstack-zaqar17:55
openstackgerritFlavio Percoco proposed openstack/zaqar-specs: Improve storage capabilities  https://review.openstack.org/12653117:58
flaper87kgriffs: ^ updated... Thanks for the reviews17:58
*** amalagon has quit IRC18:00
*** sgotliv has quit IRC18:01
openstackgerritMerged openstack/zaqar-specs: Make FIFO guarantee optional  https://review.openstack.org/12598618:02
*** exploreshaifali has quit IRC18:13
kgriffsback18:35
kgriffsflaper87: btw, I would looking at the v1.1 api spec18:35
kgriffsI think the flavors docs could be improved. it doesn't say anything about a18:36
kgriffspool group18:36
kgriffsam I understanding correctly?18:36
kgriffsflavor -> pool group -> N pools18:36
openstackgerritMerged openstack/zaqar-specs: Improve storage capabilities  https://review.openstack.org/12653118:36
kgriffsflaper87: also, looking at the docs, it seems that the operator is supposed to set capabilities when PUTing a new flavor18:40
kgriffsso my question was, what happens if they set capabilities there that are not offered by the pool group?18:40
kgriffsalternatively, should a flavor's capabilities simply bubble up from what the underlying pool group can do rather than being set by the operator manually?18:41
*** X019 has quit IRC18:41
* vkmc lurks 18:56
vkmcIIRC if the operator selects capabilities that are not offered by the pool group then an error should raise18:57
vkmcand we cannot afford the second one because there are some capabilities that may be offered by the pool group that doesn't fit the operator needs18:57
vkmcas in.. FIFO or not FIFO18:57
*** reed has quit IRC19:02
kgriffssuppose we allow a capability overlay/mask to be provided when defining a flavor19:03
*** cpallares has quit IRC19:03
kgriffsIn this design, I can have multiple flavors that share the same pools behind the scenes, but perhaps expose them with different capabilities to the user.19:05
*** ametts has quit IRC19:05
vkmcthat would be possible if flavors were associated to a queue/topic19:06
vkmcin this design19:06
kgriffsalternatively, I can have, say two pools19:07
kgriffsthey are identical, with the same capabilities19:07
kgriffsthen I create two flavors, one for each pool19:07
kgriffsbut in one flavor, I specify different capabilities19:07
kgriffsin this case, I might as well just configure the pool in the first place with the capabilities I want to expose through the flavor19:08
*** amalagon has joined #openstack-zaqar19:09
kgriffswhat are some other (potential) benefits of setting capabilities when PUTing a new flavor?19:10
kgriffs(how would this be used?)19:10
vkmcthe thing is... you select the flavor according to the capabilities19:11
vkmcthe idea of the capabilities happened because of flavors19:12
vkmcwe needed a way to know if a flavor could be assigned to a pool19:12
vkmcin the use case you mentioned... you have two pools with the same capabilities19:13
vkmcyou may want that one pool behaves in some way, different from the other19:14
vkmcor maybe you want both pools to behave the same way19:14
kgriffsit seems to me that capabilities should be owned by the pool then, not the flavor19:14
vkmcyou adjust the flavors according to the use cases you want to cover19:14
kgriffslike, I configure a pool19:14
kgriffsI say I want it to have these capabilities19:14
kgriffsthen when I add nodes to the pool, the service checks to see if the driver configs I am giving can support the capabilities for that pool19:15
kgriffsthen when I add a flavor, i am really just saying "when someone wants a topic/queue, it has such and such a flavor, which is just a grouping of pools which some capabilities"19:15
kgriffsa flavor is just a way to say "use this particular group of pools" right?19:16
kgriffsand I can ask what capabilities that flavor has19:16
kgriffstherefore, it doesn't make sense to me for the operator to specify capabilities when creating a flavor. They tell the flavor what pools it maps to, and the capabilities are derived from that.19:17
flaper87very quick because I've got to go19:17
flaper87The idea is to disable the PUT on flavors19:18
flaper87now that the storage exposes the capabilities19:18
flaper87not sure if that makes sense or not19:18
flaper87If we enable it, there won't be a way to prevent the operator to set random capabilities19:19
kgriffsyeah, that makes more sense. It wasn't clear from reading the spec.19:19
kgriffsbut19:19
flaper87my thinking is that the storage knows best about what it can/cannot do19:19
kgriffswhat is a flavor then19:19
kgriffsis it a group of pools?19:19
flaper87mmh, good question19:19
kgriffsa mapping that says, for messages using this topic/queue they should go to this group of pools?19:20
flaper87it's not a group of pools19:20
flaper87because falvors can have just 1 pool19:20
flaper87Basically, flavors are user-facing pools19:20
vkmcflavors define the behaviour of a pool19:20
flaper87a group of pools19:21
flaper87*19:21
flaper87but yeah19:21
flaper87Flavors don't contain sensible information like pool's configs, etc19:21
flaper87they just contain the pool group and capabilities19:21
kgriffsi thought you just said a flavor can have just one pool, not a group?19:21
vkmc<flaper87> because falvors can have just 1 pool <-19:21
vkmcmaybe he meant just one group19:22
flaper87vkmc: sorry, just 1 group of pools19:22
kgriffslol19:22
vkmccool19:22
vkmc:)19:22
flaper87:D19:22
kgriffsok, so is that what we are saying a flavor is now19:22
flaper87sorry about that19:22
kgriffsa pool group19:22
flaper87That's my point19:22
vkmcno problem dud19:22
flaper87the flavor doesn't group the pools19:22
flaper87The pools already have a group19:22
flaper87the flavor just exposes the group to the user19:22
*** reed has joined #openstack-zaqar19:23
vkmcflavors just say... ok, this group here will be able to do this and that19:23
kgriffsok19:23
kgriffsso let me see if I understand19:23
flaper87Ultimately, I think flavors will do more than that19:23
flaper87sorry, got to go19:23
flaper87bbib19:23
flaper87:(19:23
kgriffsok19:23
kgriffsI am out the next two days19:23
vkmcttfn flaper87!19:23
kgriffsso we may have to pick this up on monday19:23
kgriffsonce we sort this out, we should make some pretty pictures and a nice wiki page19:24
vkmcyeah :)19:24
kgriffsbetter yet, a nice addition to the operator docs19:24
kgriffsok, so here is where I am right now. we can pick up the conversation when flaper87 returns19:24
kgriffssuppose I am an operator19:24
vkmcsure thing19:24
kgriffsi want to deploy Zaqar for much win19:24
kgriffsso I set up, say, 3 pools19:25
kgriffs2 pools are my "high-throughput" pools19:25
kgriffsI configure those with shorter max TTL and turn off FIFO/AOD19:25
kgriffsthen I add 1 more pool19:27
kgriffsthis is my "durable" pool19:27
kgriffsI let people keep things around longer, use larger message sizes, enable FIFO19:28
kgriffsnext, I suppose I would create two pool groups19:28
kgriffsgroup A and group B19:28
kgriffsput the first two pools in A, the other in B19:28
kgriffsnow, I want to expose this to my users19:28
kgriffsrather than the service simply exposing those groups directly, I have to create flavors that map 1:1 to group A and B?19:29
kgriffsso, my (devil's advocate) question: why make me go through the extra layer of indirection?19:29
kgriffs(brb - need to grab food)19:30
kgriffs(before the food truck leaves)19:30
vkmcgo go go :)19:31
*** kgriffs is now known as kgriffs|afk19:31
* vkmc thinks about Kurt's case19:32
*** exploreshaifali has joined #openstack-zaqar19:37
*** sgotliv has joined #openstack-zaqar19:39
*** amalagon has quit IRC19:47
*** kgriffs|afk is now known as kgriffs19:51
exploreshaifaliflaper87, around ?19:55
flaper87kgriffs: around?20:12
flaper87exploreshaifali: yeah20:12
kgriffshere20:12
flaper87kgriffs: I'd like to clarify this now to merge the spec20:12
flaper87:D20:12
exploreshaifaliflaper87, I am suppose to change https://github.com/openstack/zaqar/blob/master/zaqar/queues/storage/utils.py#L4620:12
exploreshaifalibut that will affect other data stored too20:13
exploreshaifaliredis and sql-alchemy20:13
flaper87exploreshaifali: right20:13
exploreshaifaliso should I modify options.py and drivers and rest test cases for two storage also20:13
flaper87ah mmh20:13
flaper87yeah, you may need to do that in this patch too20:13
flaper87:/20:14
exploreshaifalior any other option is there by which we can use if else statement20:14
exploreshaifalito identify20:14
exploreshaifaliif it is mongodb or not20:14
flaper87exploreshaifali: it'd be better to just do everything now20:14
flaper87it's clearer20:14
flaper87I think20:14
flaper87kgriffs: so, flavors20:14
kgriffsyeah20:14
flaper87kgriffs: we should disable PUT there20:14
flaper87to get capabilities from pools20:15
flaper87then your question20:15
kgriffsok, that makes sense20:15
flaper87what are flavors then ?20:15
kgriffsright20:15
kgriffsyou saw my thought experiment above?20:15
flaper87ah mmh, lemme read20:15
kgriffsjust trying to think of this from a user perspective20:15
vkmcin reply to your thoughts kgriffs20:17
flaper87the extra level of indirection is because you don't want your users to see your pools url, etc20:17
flaper87also20:17
vkmcyou have the three pools, but you have to define which one will be the faster and which one will be the persistent20:17
flaper87In the pools you have extra things you can do20:17
flaper87for example, a pool group could be a per-region cluster of nodes20:17
flaper87Say you have your us-1-pool and emea-1-pool group20:18
flaper87You don't want users to know that20:18
flaper87So you put an envelop on top of your group and say: This is your flavor high-throughput and those are its capabilities20:18
kgriffsok, so it is really a way to give a friendly name to your group?20:18
flaper87We originally created flavors to let ops set the capabilities, TBH20:19
flaper87the other things I just said are based on some thoughts I had while working on flavors20:19
flaper87think about pools like you'd think about nova's compute nodes20:21
flaper87you've flavors on top of those explaining what kind of compute you need20:21
flaper87but the you've your compute nodes registered20:21
flaper87and compute hosts are balanced by the scheduler and whatnot20:21
flaper87Lets imagine we delete flavors20:22
flaper87The pool group field would become what the flavor name is now20:23
flaper87and capabilities would be picked automagically from the stores20:23
flaper87If we'd like to migrate a queue from one group to another, we'd need to change the pool group in the queue metadata20:24
flaper87kgriffs: ^20:26
flaper87vkmc: ^20:26
kgriffsdo you think that there will always be a 1:1 ratio between flavors and groups?20:26
flaper87I've been thinking a bit about that, I think at one point we'll want to have more groups per flavor20:27
flaper87I'm not sure20:27
flaper87really20:27
kgriffsok20:28
kgriffsthe reason i ask20:28
kgriffsis that one way we could think about flavors is like an encapsulation of the "human" attributes of a group20:29
kgriffsmeaning, a group is a thing20:29
kgriffsand that group has a flavor document20:29
kgriffsthat flavor document has a human-friendly name, description, etc. - stuff that is useful for horizon to display, or a CLI tool for example.20:29
flaper87kgriffs: right20:30
*** sgotliv has quit IRC20:30
vkmcthat is metadata20:32
vkmcflavors describe what a group can or cannot do20:32
kgriffsmmm20:32
kgriffsvkmc: that conflates capabilities with flavors20:32
kgriffsactually20:33
vkmccapabilities is what the group can do20:33
kgriffsit is sort of the human-readable description of capabilities20:33
vkmcflavors is what the operators want the group to do20:33
kgriffswell, kind of20:33
kgriffsI see it as a way for the operator to describe two things20:33
kgriffsactually, three20:33
kgriffsfirst, give a group a friendly name, like "high-throughput"20:34
flaper87kgriffs: https://soundcloud.com/kaleidamusic?utm_source=soundcloud&utm_campaign=share&utm_medium=twitter <- you should totally listen to "Archive"20:34
*** flwang1 has joined #openstack-zaqar20:34
vkmcflaper87, recommend me another band, different from Archive20:34
kgriffssecond, explain some things that can't really be expressed programmatically with capabilities20:34
kgriffslike "this flavor is on our super-awesome Redis boxes that have been tuned for maximum magic"20:35
vkmcmuch magic, wow20:35
kgriffsthird, maybe put a prose description there about the capabilities20:35
kgriffs"we don't guarantee FIFO and AOD here, so this is probably only good for that twitter firehose where you are ok if you miss one out of every million tweets20:36
flaper87vkmc: did you like it ?20:36
* kgriffs goes looking for Archive20:36
vkmcflaper87, yeah, I'm just digging into your progressive rock knowledge20:36
*** exploreshaifali has quit IRC20:37
vkmckgriffs, where do you think this descriptions should go?20:38
flaper87vkmc: well, not exactly progressive knowledge but have you listened to Pink Floyd's new and last album?20:38
kgriffsvkmc: I think it needs a distinct home20:38
kgriffswhether it is a standalone resource or just some additional fields for a group, i'm not sure yet20:39
flaper87kgriffs: when you get a chance, it'd be great to get your thoughts on this spec too https://review.openstack.org/#/c/134015/20:39
kgriffsin either case, I feel like this is the direction flavors should evolve in 2.020:39
* flaper87 reads backlog20:39
vkmcflaper87, I did yeah20:40
flaper87kgriffs: what do you think is missing in the current flavor implementation?20:40
flaper87kgriffs: AFAICT, we can do what you described by combining capabilities and a good name20:41
flaper87we could add more fields to it20:41
kgriffsso, what is missing20:41
flaper87vkmc: did you like it ?20:41
kgriffsthis is how I envision flavors evolving20:41
kgriffsfirst, 1.1 capabilities in flavors evolves to just be some well-named fields that a UX (horizon, CLI) tool can pick up and show to the user20:42
kgriffsname, description...20:42
kgriffsthen we have a newer notion of capabilities, but these are actually standardized as has been proposed, and actually live with drivers and pools20:43
vkmcflaper87, more or less... it made me remember The Division Bell but I feel it is missing something20:43
kgriffsthese capabilities bubble up and the user can see them as part of the flavor resource20:43
kgriffsbut really they aren't hard-coded in the resource - they are sourced dynamically from the associated pool group20:44
kragnizA++ would listen to soundcloud links from flaper87 again20:44
flaper87vkmc: right? I had the same feeling.20:45
flaper87kragniz: haha, awesome.20:45
kgriffsnot sure if that makes sense. I have a picture in my head that is hard to convert to text.20:45
flaper87kragniz: well, to be fair, I got that soundcloud link from kgriffs's twitter20:45
flaper87kgriffs: It kinda does20:46
flaper87I think I got what you mean20:46
* kgriffs has this morph animation going on in his head from flavors in 1.1 to 2.020:46
flaper87IIUC, you're saying we should expand the current flavor adding it some fields that would make them more like a descriptive resource than a logical resource20:47
vkmckgriffs, draw it!20:48
flaper87BTW, Archive is coming to Milan in March 201520:48
flaper87Guess who's going?20:48
flaper87:)20:48
vkmcda flaper!20:49
kgriffshttps://gist.github.com/anonymous/d47069aa05a1d46b914f20:52
vkmcI was listening TMV, but I think I'll check another of Archive20:52
kgriffsso the biggest change going to 2.0 is conceptual. The way we think about flavors and document them.20:52
vkmckgriffs, when would you set the title and description? on creation?20:53
kgriffsyes20:53
vkmccan you later change it?20:54
kgriffscapabilities can't be set by the operator though when creating the flavor. They are determined dynamically according to the group the operator associates the flavor with20:54
kgriffswhen I create a flavor, I give some initial metadata, like title and group it is associated with20:55
kgriffswhen an admin later lists those flavors, they can see everything, including the group it was associated with20:56
kgriffsbut a user listing flavors probably shouldn't see the underlying pool group name20:56
kgriffsI've got a meeting in a few minutes, but can chat some more after that20:56
kgriffs(btw)20:56
*** amalagon has joined #openstack-zaqar20:57
vkmcok :)20:58
kgriffsbrb20:58
*** kgriffs is now known as kgriffs|afk21:01
*** amalagon has quit IRC21:02
*** achanda has joined #openstack-zaqar21:15
*** achanda has quit IRC21:20
*** echevemaster has joined #openstack-zaqar21:33
*** achanda has joined #openstack-zaqar21:48
*** achanda has quit IRC21:49
*** amalagon has joined #openstack-zaqar21:50
*** kgriffs|afk is now known as kgriffs22:07
kgriffsback22:07
flwangkgriffs: around?22:37
*** achanda has joined #openstack-zaqar22:50
*** achanda has quit IRC22:55
kgriffsyes23:06
flwangkgriffs: i have a question about the code structure of zaqar23:09
kgriffskk23:09
flwangkgriffs: given we're going to support notification service23:09
flwangafter discussed with flaper87, he suggest we keep using one process to deliver both queue and notification service23:10
flwangbut you know, current code structure can't support that.23:11
flwangkgriffs: now I'm working on a proof of concept, see https://github.com/OpenStacker/zaqar/tree/notification23:11
flwangbut I would like get some advices from your view :)23:12
flwang1. should we keep two separate wsgi app for queues and notifications? so that operators can deploy them separately23:12
flwang2. any suggestion about how organize the common code of the two wsgi apps ? given wsgi is just one of the transport implement23:14
kgriffshmm23:15
kgriffsit might help to think about the notifications feature in pieces23:16
kgriffsfirst, there is the piece where you manage your subscription23:16
flwangkgriffs: yep23:17
kgriffsthat will be part of the regular API23:18
flwangkgriffs: agree23:18
kgriffsso, it seems like it would just live with the WSGI and websocket transport code as do all the other operations23:18
flwangkgriffs: so do you mean we should not keep the notification service in a separate package?23:18
kgriffsthat part of it doesn't seem like it should be separate. but let's think about the other piece(s)23:19
flwangkgriffs: or maybe we should make the transport layer be more common so that to be shared by the two services23:19
flwangkgriffs: I know it's not a 2 minutes job :)23:20
kgriffshmm23:20
kgriffswell, i think the subscription management piece is just another operation and not a separate service.23:20
flwangso please help review my current silly POC code and we can talk later23:20
flwangkgriffs: oh23:21
flwangyes, we can say that23:21
kgriffswhat may be a different service/process/daemon is the worker pool that delivers the messages23:21
flwangso is it necessary to keep it in a separate package?23:21
flwangI mean same level like queues?23:21
* kgriffs thinking23:22
flwangkgriffs: I have to join another meeting. would you mind me catching you tomorrow? :)23:23
kgriffsI'm having trouble coming up with any benefits for having a separate package for notifications unless we have a separate daemon or something23:23
kgriffsi mean, it is an integral part of the service23:24
flwangand it would be nice if we can talk with flaper87 together23:24
kgriffsflwang: actually, I will be on holiday thursday and friday23:24
kgriffsI would be happy to discuss this more on monday23:24
flwangkgriffs: ah, ok, sure23:24
flwangkgriffs: but I think i have got your opinion23:24
flwangkgriffs: thank you so much23:24
kgriffssure.23:24
flwangkgriffs: have a good holiday ;) happy thanksgiving day!23:25
kgriffsthanks!23:25
flwangwe don't have it in New Zealand :(23:25
kgriffsah, too bad.23:25
flwangsee you next Mon :)23:25
kgriffskk, take care!23:25

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