*** jaosorior has joined #openstack-mistral | 00:20 | |
*** jaosorior has quit IRC | 00:31 | |
*** rbrady has quit IRC | 00:46 | |
*** bobh has joined #openstack-mistral | 00:52 | |
*** bobh has quit IRC | 00:52 | |
*** bobh has joined #openstack-mistral | 00:52 | |
*** zhurong has joined #openstack-mistral | 01:29 | |
*** zhurong has quit IRC | 01:35 | |
*** bobh has quit IRC | 02:11 | |
*** gongysh has quit IRC | 02:40 | |
*** gongysh has joined #openstack-mistral | 02:40 | |
*** rbrady has joined #openstack-mistral | 02:42 | |
*** rbrady has quit IRC | 02:42 | |
*** rbrady has joined #openstack-mistral | 02:42 | |
*** gongysh has quit IRC | 02:45 | |
*** thrash is now known as thrash|g0ne | 03:29 | |
*** sharatss has joined #openstack-mistral | 04:48 | |
*** jpich has joined #openstack-mistral | 06:55 | |
*** gongysh has joined #openstack-mistral | 07:30 | |
*** sharatss has quit IRC | 08:29 | |
*** sharatss has joined #openstack-mistral | 08:30 | |
zhenguo | rakhmerov: do you have some concerns if I move mistral dashboard py35 gate to voting?, seems it works well for a long time | 08:37 |
---|---|---|
rakhmerov | zhenguo: yes, go ahead | 08:38 |
rakhmerov | thanks | 08:38 |
zhenguo | rakhmerov: ok thanks | 08:38 |
*** AJaeger has joined #openstack-mistral | 08:56 | |
AJaeger | mistral team, could I get a second +2 and +A on https://review.openstack.org/431143 , please? | 08:57 |
*** openstackgerrit has quit IRC | 09:03 | |
*** openstackgerrit has joined #openstack-mistral | 09:24 | |
openstackgerrit | Sharat Sharma proposed openstack/mistral master: Support i18n for LOG.warning https://review.openstack.org/430866 | 09:24 |
ddeja | rakhmerov: Hi, I've spend a lot of time yesterday trying to investigate it | 09:34 |
ddeja | but with no luck | 09:34 |
rakhmerov | ddeja: hi Dawid | 09:34 |
rakhmerov | I see | 09:35 |
rakhmerov | ddeja: let me know if you're out of ideas | 09:35 |
rakhmerov | I'd like to merge it before the end of RC-2 | 09:35 |
rakhmerov | AJaeger: done (w/o second +2 though) | 09:35 |
ddeja | rakhmerov: I've tried to recheck it, but it still fails... | 09:36 |
rakhmerov | ok | 09:36 |
ddeja | I have one idea why it is happening, but I don't understand why it shows after we change the serialization method | 09:36 |
ddeja | but it looks like we a) open rpc connection using kombu and use it for communication beetwen API<->EvenEngineService | 09:37 |
rakhmerov | yes, so? | 09:37 |
ddeja | b) EventEngine starts new rpc connection to listen to notification using standard oslo mechanism | 09:38 |
ddeja | and in the same moment we got 'connection refused' on API side | 09:38 |
ddeja | that's what it looks like from logs | 09:38 |
rakhmerov | hm.. | 09:38 |
rakhmerov | werid | 09:38 |
rakhmerov | weird | 09:39 |
ddeja | I'll try to run it locally and see if I can somehow debug it | 09:39 |
ddeja | it's weird, since it has nothing to do with serialization | 09:39 |
ddeja | if there is a problem with using both kombu driver and oslo in the same time, it should pop up erlier | 09:39 |
rakhmerov | ddeja: ok, Dawid, thanks for looking at it. The important thing for me: if you feel you're stuck or don't have time to continue etc. please let me know asap | 09:39 |
ddeja | I'll run those tests locally today | 09:40 |
ddeja | if it doesn't resolve it, then I have no other ideas | 09:40 |
rakhmerov | may it be related with, e.g. thread safety? | 09:40 |
rakhmerov | now we use the same serializer instance | 09:41 |
rakhmerov | this polymorphic serializer | 09:41 |
rakhmerov | it's a singleton | 09:41 |
ddeja | hm, maybe... | 09:41 |
rakhmerov | but on the other hand, it's stateless | 09:41 |
AJaeger | rakhmerov: thanks | 09:41 |
rakhmerov | the instance doesn't have any state that could affect threads | 09:41 |
rakhmerov | AJaeger: np :) | 09:42 |
ddeja | rakhmerov: it's something to start with | 09:42 |
rakhmerov | ddeja: and also, encoder and decoder functions in Kombu used to be assigned with static methods | 09:42 |
rakhmerov | now they are bound to an instance | 09:42 |
rakhmerov | I wasn't sure it was 100% OK when I was changing it | 09:43 |
rakhmerov | theoretically this should not make any difference but who knows | 09:43 |
rakhmerov | ooh, so all three tests are related to event triggers | 09:44 |
ddeja | ok, thanks for letting me now | 09:44 |
ddeja | yes | 09:44 |
rakhmerov | that's interesting | 09:44 |
ddeja | they basically fails on creating the event trigger | 09:44 |
ddeja | rakhmerov: can we create the event trigger using mistral client | 09:45 |
ddeja | I can't see such option after running 'mistral help' | 09:45 |
rakhmerov | let me check | 09:45 |
rakhmerov | we should be able to | 09:45 |
rakhmerov | ooh, no | 09:46 |
rakhmerov | we can't | 09:46 |
rakhmerov | it's neither in Python API nor in CLI | 09:46 |
rakhmerov | only REST API | 09:46 |
rakhmerov | ddeja: you can also experiment with different serializers. Say what happens if you return the previous serializer (with static methods) and run these tests again? | 09:48 |
rakhmerov | maybe it's not a serialization problem at all but I just changed something else | 09:48 |
rakhmerov | directly or indirectly | 09:48 |
rakhmerov | if you get the old serializer back then these tests I guess need to pass, at least creating event trigger | 09:49 |
rakhmerov | everything should work except deserializing Result object | 09:49 |
rakhmerov | I mean, try to vary something and experiment | 09:50 |
rakhmerov | another assumption: something related with event triggers is not serialized/deserialized properly | 09:51 |
rakhmerov | it may fail somewhere | 09:52 |
ddeja | rakhmerov: OK, I'll try | 09:52 |
rakhmerov | ddeja: I also found this in the log http://paste.openstack.org/show/598192/ | 09:55 |
rakhmerov | not sure it's related though | 09:55 |
rakhmerov | in engine log | 09:55 |
ddeja | rakhmerov: I don't think it is | 09:57 |
rakhmerov | yeah.. | 09:57 |
ddeja | yesterday I went trough the code | 09:58 |
ddeja | it's only API - EventEngine communication | 09:58 |
rakhmerov | ok | 09:58 |
rakhmerov | ddeja: Dawid, I would really start with checking how event_engine.create_event_trigger() works via RPC | 10:02 |
rakhmerov | on the API side we have: | 10:02 |
rakhmerov | rpc.get_event_engine_client().create_event_trigger( | 10:03 |
rakhmerov | trig.to_dict(), | 10:03 |
rakhmerov | events | 10:03 |
rakhmerov | ) | 10:03 |
rakhmerov | we need to make sure that this works | 10:03 |
rakhmerov | w/o even looking at oslo notifications etc. | 10:03 |
rakhmerov | event_engine itself doesn't return anything (None) | 10:03 |
rakhmerov | maybe None doesn't get serialized properly | 10:04 |
rakhmerov | or trigger represented as dict | 10:04 |
rakhmerov | when we pass it to the RPC server | 10:04 |
rakhmerov | it seems a lot like some exception is swallowed somewhere | 10:07 |
*** sharatss has quit IRC | 10:12 | |
*** sharatss has joined #openstack-mistral | 10:13 | |
ddeja | ok | 10:14 |
ddeja | I'll look on it | 10:14 |
*** sharatss has quit IRC | 10:19 | |
*** sharatss has joined #openstack-mistral | 10:19 | |
openstackgerrit | Sharat Sharma proposed openstack/mistral master: Added style enfore checks for assert statements https://review.openstack.org/431427 | 10:36 |
openstackgerrit | Merged openstack/mistral master: Prepare for using standard python tests https://review.openstack.org/431143 | 10:36 |
*** AJaeger has left #openstack-mistral | 10:46 | |
openstackgerrit | Sharat Sharma proposed openstack/mistral master: Support i18n for LOG.warning https://review.openstack.org/430866 | 10:53 |
*** tuan_ has joined #openstack-mistral | 11:16 | |
tuan_ | Hi, could you guys please review that patch #5 of this commit | 11:19 |
tuan_ | https://review.openstack.org/#/c/424621/ | 11:19 |
*** gongysh has quit IRC | 11:41 | |
*** jkilpatr has quit IRC | 11:44 | |
*** thrash|g0ne is now known as thrash | 11:47 | |
*** jkilpatr has joined #openstack-mistral | 11:59 | |
*** dprince has joined #openstack-mistral | 12:13 | |
*** bobh has joined #openstack-mistral | 12:29 | |
*** bobh has quit IRC | 12:33 | |
ddeja | rakhmerov: still there? | 12:38 |
rakhmerov | yes sir | 12:39 |
ddeja | http://paste.openstack.org/show/598221/ | 12:39 |
ddeja | lines 124-125 and lines 151-160 | 12:39 |
ddeja | this works | 12:39 |
rakhmerov | :))) | 12:40 |
rakhmerov | that was the issue? | 12:40 |
ddeja | it seems so | 12:41 |
rakhmerov | second... | 12:41 |
rakhmerov | not sure I understand everything yet | 12:41 |
rakhmerov | looking.. | 12:41 |
ddeja | the only change is that I've written my own serializer/deserializer and used them in kombu | 12:41 |
rakhmerov | ok, can you explain pls? | 12:41 |
ddeja | to be honest, I have no idea why it works | 12:42 |
rakhmerov | in 124-125 you're still using self._serialize | 12:42 |
rakhmerov | which is the old way of serializing it | 12:42 |
ddeja | yes | 12:42 |
rakhmerov | same for deserializing | 12:42 |
ddeja | yes | 12:42 |
rakhmerov | _serialize_message() is the new way | 12:42 |
rakhmerov | but you don't use it here | 12:43 |
rakhmerov | what's the point? | 12:43 |
ddeja | and I use new way for serialize/deserialize inpput parameters | 12:43 |
rakhmerov | where? | 12:43 |
ddeja | in kombu_client/server | 12:43 |
ddeja | it is already in patch | 12:43 |
rakhmerov | where do you use these two methods? | 12:43 |
rakhmerov | ok | 12:43 |
ddeja | the only change from the current patch | 12:44 |
ddeja | is this file and lines I gave you | 12:44 |
ddeja | rest is the same | 12:44 |
ddeja | it looks like there is a problem with using same serializer for kombu and for oslo | 12:44 |
rakhmerov | ooh, gosh... | 12:45 |
rakhmerov | I really don't understand | 12:45 |
ddeja | from my limited knowledge | 12:45 |
rakhmerov | wait a second.. | 12:45 |
ddeja | of how kombu and o.m works | 12:45 |
rakhmerov | aah, I see now | 12:45 |
rakhmerov | I just didn't carefully look at your last patchset | 12:46 |
ddeja | OK | 12:46 |
rakhmerov | so, then I don't understand what this encoder/decoder is for? | 12:46 |
rakhmerov | :) | 12:46 |
ddeja | ok, we have like 2 layers of serialization | 12:46 |
ddeja | let's say we want to send object Result via RPC | 12:47 |
rakhmerov | I think I see | 12:47 |
rakhmerov | go on pls.. | 12:47 |
ddeja | firstly we would use the new serializers written by you | 12:47 |
rakhmerov | yes | 12:47 |
ddeja | and serialize it to dictionary | 12:47 |
ddeja | and we would put this dictionary in the second dictionary called 'body' | 12:47 |
ddeja | so this would be something like body = {'params' : { *result dict* }} | 12:48 |
rakhmerov | polymorphic serializer always returns a string | 12:48 |
ddeja | ok, so it would be a string ;) | 12:48 |
rakhmerov | it can't be a dict | 12:48 |
rakhmerov | it's a json string in general case | 12:48 |
ddeja | nevertheless, it would be put inside a dict under the params key | 12:48 |
rakhmerov | ok | 12:48 |
rakhmerov | how about return values? | 12:49 |
ddeja | this body dict have some other info, like reply_id, and soon | 12:49 |
rakhmerov | aaah | 12:49 |
ddeja | so, we need to serilize it, to send it over RPC | 12:49 |
ddeja | that is why we have 2 serializers | 12:49 |
ddeja | and, the main point | 12:49 |
ddeja | when we declare a serialize into kombu | 12:49 |
rakhmerov | ddeja: we could probably use some noop methods for encoder/decoder, it may just work :) | 12:50 |
ddeja | using serialization.register | 12:50 |
rakhmerov | ok | 12:50 |
ddeja | then this serializer is passed to kombu Connection object | 12:50 |
ddeja | (from my limited knowledge_ | 12:50 |
ddeja | or maybe not to this object, but it is passed to kombu library | 12:50 |
ddeja | so, here's what happens on the EvenEngine side | 12:51 |
rakhmerov | ok | 12:51 |
ddeja | we create kombu connection using polymorphic serializer - polymorfic serializer methods are passed to kombu | 12:51 |
rakhmerov | yep | 12:51 |
ddeja | then, we want to listen to event, so we create the oslo_event_listener | 12:51 |
rakhmerov | aha | 12:51 |
ddeja | which also uses polymorfic serializer | 12:51 |
ddeja | and it also passes it to kombu | 12:52 |
rakhmerov | same instance, yes | 12:52 |
ddeja | we passes same instance twice | 12:52 |
ddeja | which results in broken connection | 12:52 |
rakhmerov | ok | 12:52 |
ddeja | I have no idea why | 12:52 |
rakhmerov | :) | 12:52 |
ddeja | but the good news it | 12:52 |
rakhmerov | hm... why is it a problem for Kombu? ) | 12:52 |
rakhmerov | weird | 12:52 |
ddeja | that there is no reason to pass this serializer directly to kombu in kombu driver | 12:52 |
rakhmerov | we can actually make it non singleton | 12:52 |
rakhmerov | np | 12:52 |
rakhmerov | that's true | 12:53 |
rakhmerov | I agree | 12:53 |
ddeja | since we are sure that at this point we have regular dict to serialize, we can just use the json.dumps | 12:53 |
rakhmerov | but does it actually have to be a string? | 12:53 |
ddeja | that is what json.dumps would construct from dict | 12:53 |
rakhmerov | what is the type of the encoder function? | 12:53 |
rakhmerov | I mean its return value | 12:53 |
ddeja | encoder should return string | 12:54 |
rakhmerov | do we even need to use json.dumps? | 12:54 |
ddeja | we need | 12:54 |
rakhmerov | you sure? I has to return a string? | 12:54 |
rakhmerov | no dict, no list? | 12:54 |
rakhmerov | no ints? | 12:54 |
ddeja | https://github.com/openstack/mistral/blob/master/mistral/engine/rpc_backend/kombu/kombu_client.py#L125-L129 | 12:54 |
ddeja | this is send over the rpc | 12:54 |
rakhmerov | because with o.m the only requirement for serializer is to return something primitive | 12:55 |
rakhmerov | that could be put in json | 12:55 |
ddeja | well, it is even simpler | 12:55 |
rakhmerov | ddeja: yes, I understand this | 12:55 |
ddeja | we can just drop the mistral_serialization | 12:55 |
rakhmerov | I mean do we even need to serialize it with json.dumps? | 12:55 |
ddeja | and use 'json' | 12:55 |
ddeja | no, we don't | 12:55 |
ddeja | https://github.com/openstack/mistral/blob/master/mistral/engine/rpc_backend/kombu/kombu_client.py#L146 | 12:55 |
rakhmerov | yes, that's what I mean | 12:55 |
ddeja | we can change this line to 'json' | 12:55 |
rakhmerov | because this body dict will always contain only primitive values | 12:56 |
ddeja | and it should work fine | 12:56 |
rakhmerov | we know that on 100% | 12:56 |
ddeja | yes | 12:56 |
ddeja | since we are parsing the kwargs manually | 12:56 |
rakhmerov | ok, this is clear now | 12:56 |
rakhmerov | another question I'm worried about | 12:56 |
ddeja | hm? | 12:56 |
tuan_ | https://review.openstack.org/#/c/424621/ | 12:57 |
rakhmerov | where do we deserialize an RPC method return value? | 12:57 |
tuan_ | could you guys please review it | 12:57 |
tuan_ | sorry for interrupting | 12:57 |
tuan_ | :( | 12:57 |
rakhmerov | tuan_: yes | 12:57 |
rakhmerov | we will | 12:57 |
ddeja | rakhmerov: second, let me find a line... | 12:57 |
rakhmerov | ddeja: I see that we serialize/deserialize arguments, but don't see the same for return value | 12:57 |
tuan_ | thanks, may i join you guys for kombu problem | 12:57 |
tuan_ | :D | 12:57 |
ddeja | rakhmerov: which return value? | 12:58 |
rakhmerov | tuan_: if you're here you already joined ;) | 12:58 |
ddeja | rakhmerov: you mean - we made a call | 12:58 |
ddeja | server got it, process it and now sends the results back? | 12:59 |
rakhmerov | ddeja: for example, we called rpc.executor_client.run_action() | 12:59 |
rakhmerov | which returns Result object | 12:59 |
rakhmerov | yes | 12:59 |
rakhmerov | we need to deserialize this Result object properly | 12:59 |
ddeja | rakhmerov: in this particular case, it uses cast to send it back, not the resend mechanism ;) | 12:59 |
rakhmerov | and serialize too | 12:59 |
ddeja | that's why it works | 12:59 |
ddeja | https://github.com/openstack/mistral/blob/master/mistral/engine/default_executor.py#L109 | 13:00 |
rakhmerov | ooh, you mean here it goes as a parameter | 13:00 |
rakhmerov | not a return value | 13:00 |
rakhmerov | I see | 13:00 |
ddeja | yup, it is send individually | 13:01 |
rakhmerov | ok | 13:01 |
ddeja | but I can add mechanism for serializing/deserializng return values | 13:01 |
rakhmerov | but we also need to make it work for synchronous calls | 13:01 |
ddeja | it works now, but it may stop work in the future | 13:01 |
rakhmerov | why? | 13:01 |
ddeja | it works now since all synchornous calls return some primitives | 13:02 |
ddeja | but if some synchornous call stars to return something non-primitive, it would stop working | 13:02 |
rakhmerov | yes, if we don't add proper serialization | 13:02 |
rakhmerov | of course | 13:02 |
*** bobh has joined #openstack-mistral | 13:02 | |
ddeja | ok, I'll work on appriopriete fix | 13:03 |
ddeja | and I would send it in a few hours | 13:03 |
ddeja | :) | 13:03 |
rakhmerov | ok | 13:03 |
rakhmerov | thanks! | 13:03 |
rakhmerov | :) interesting stuff | 13:03 |
ddeja | yup | 13:03 |
rakhmerov | I'm almost sure it will work even if we drop this 'mistral_serialization' completely | 13:04 |
rakhmerov | can make a bet :) | 13:04 |
ddeja | yes, we will | 13:04 |
ddeja | it will* | 13:05 |
rakhmerov | Dawid, will you be available next week? | 13:05 |
ddeja | maybe a little less the usuall | 13:05 |
rakhmerov | ok | 13:05 |
ddeja | but yes | 13:05 |
rakhmerov | I need to discuss some other things with you | 13:05 |
ddeja | no problem | 13:05 |
rakhmerov | ok, I'm out | 13:05 |
ddeja | OK | 13:06 |
*** bobh has quit IRC | 13:27 | |
*** brunograz1 has joined #openstack-mistral | 13:48 | |
*** gongysh has joined #openstack-mistral | 13:52 | |
*** brunograz has joined #openstack-mistral | 13:53 | |
*** brunograz has quit IRC | 14:14 | |
*** brunograz1 has quit IRC | 14:22 | |
*** catintheroof has joined #openstack-mistral | 14:31 | |
*** brunograz has joined #openstack-mistral | 14:37 | |
*** ChatSharp has joined #openstack-mistral | 14:59 | |
*** ChatSharp has left #openstack-mistral | 14:59 | |
openstackgerrit | Dawid Deja proposed openstack/mistral master: Refactor RPC serialization: add polymophic serializer https://review.openstack.org/429643 | 15:11 |
ddeja | rakhmerov: I hope this will do a job https://review.openstack.org/429643 | 15:34 |
rakhmerov | ok | 15:49 |
openstackgerrit | luong tuan proposed openstack/mistral master: Deleting the expired execution in chunk https://review.openstack.org/424621 | 15:52 |
*** tuan_ has quit IRC | 16:01 | |
*** brunograz has quit IRC | 16:03 | |
*** tuan has joined #openstack-mistral | 16:03 | |
*** brunograz has joined #openstack-mistral | 16:09 | |
*** yohana has joined #openstack-mistral | 16:10 | |
*** gongysh has quit IRC | 16:13 | |
*** yohana has left #openstack-mistral | 16:15 | |
*** sharatss has quit IRC | 16:30 | |
*** jaosorior has joined #openstack-mistral | 16:31 | |
*** thrash is now known as thrash|f00dz | 16:38 | |
*** vishwanathj has joined #openstack-mistral | 16:50 | |
*** vishwanathj has quit IRC | 16:57 | |
*** tuan has quit IRC | 16:59 | |
*** jaosorior is now known as jaosorior_mtg | 17:03 | |
*** tuan_ has joined #openstack-mistral | 17:04 | |
*** catintheroof has quit IRC | 17:06 | |
*** tuan_ has quit IRC | 17:07 | |
*** catintheroof has joined #openstack-mistral | 17:07 | |
openstackgerrit | luong tuan proposed openstack/mistral master: Deleting the expired execution in chunk https://review.openstack.org/424621 | 17:10 |
*** catintheroof has quit IRC | 17:11 | |
*** jpich has quit IRC | 17:30 | |
*** dprince has quit IRC | 17:44 | |
*** dprince has joined #openstack-mistral | 17:45 | |
rakhmerov | ddeja: something is still failing | 17:55 |
rakhmerov | a bunch of tests :) | 17:55 |
*** thrash|f00dz is now known as thrash | 18:13 | |
*** catintheroof has joined #openstack-mistral | 18:26 | |
*** jkilpatr_ has joined #openstack-mistral | 18:28 | |
*** jkilpatr has quit IRC | 18:31 | |
*** jaosorior_mtg has quit IRC | 18:35 | |
*** jaosorior has joined #openstack-mistral | 18:35 | |
*** hrybacki____ is now known as hrybacki | 19:08 | |
*** jaosorior has quit IRC | 19:20 | |
*** rbrady is now known as rbrady-afk | 19:39 | |
*** EmilienM has joined #openstack-mistral | 19:51 | |
*** mwhahaha has joined #openstack-mistral | 19:51 | |
EmilienM | hello | 19:51 |
EmilienM | https://review.openstack.org/#/c/425581/3/mistral/actions/openstack/action_generator/base.py@38 | 19:51 |
EmilienM | this is breaking deployments that run Mistral in WSGI with apache | 19:51 |
EmilienM | before we take the revert way, is there any thought? | 19:51 |
*** jaosorior has joined #openstack-mistral | 20:11 | |
EmilienM | I filed a bug https://bugs.launchpad.net/mistral/+bug/1663368 | 20:12 |
openstack | Launchpad bug 1663368 in Mistral "mistral-api in WSGI fails with "cannot register CLI option" error" [Undecided,New] | 20:12 |
openstackgerrit | Emilien Macchi proposed openstack/mistral master: Revert "External OpenStack action mapping file support" https://review.openstack.org/431735 | 20:14 |
*** pcastets has quit IRC | 20:15 | |
*** jkilpatr_ has quit IRC | 20:18 | |
*** jkilpatr has joined #openstack-mistral | 20:19 | |
kong | EmilienM: hi, i wonder how it breaks deployment with wsgi? | 20:24 |
kong | ooh, i saw the log link in bug report | 20:25 |
EmilienM | :) | 20:25 |
kong | will take a look | 20:25 |
EmilienM | thanks! | 20:25 |
*** harlowja_ has joined #openstack-mistral | 20:35 | |
*** harlowja has quit IRC | 20:37 | |
kong | hi, EmilienM, i think there is no need to have the whole patch reverted, just change the cli option back to normal config option | 20:49 |
kong | hmm.. think again, it's ok we revert the whole patch, let's see other reviewers option | 20:53 |
*** rbrady-afk is now known as rbrady | 20:56 | |
EmilienM | kong: I agree | 21:13 |
EmilienM | kong: I'm ok to not revert | 21:13 |
EmilienM | if we have a fix | 21:13 |
*** jkilpatr has quit IRC | 21:34 | |
*** jkilpatr has joined #openstack-mistral | 21:52 | |
*** harlowja_ has quit IRC | 21:58 | |
*** harlowja has joined #openstack-mistral | 22:05 | |
*** jaosorior has quit IRC | 22:37 | |
*** jaosorior has joined #openstack-mistral | 22:38 | |
*** jaosorior has quit IRC | 23:10 | |
*** jaosorior has joined #openstack-mistral | 23:11 | |
*** dprince has quit IRC | 23:18 | |
*** jaosorior has quit IRC | 23:29 | |
*** dprince has joined #openstack-mistral | 23:50 | |
*** dprince has quit IRC | 23:59 |
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!