*** harlowja has joined #openstack-mistral | 00:49 | |
*** gongysh has joined #openstack-mistral | 01:07 | |
*** harlowja has quit IRC | 01:42 | |
*** harlowja has joined #openstack-mistral | 01:56 | |
openstackgerrit | Lingxian Kong proposed openstack/mistral master: Add "action_region" param for OpenStack actions https://review.openstack.org/460351 | 02:07 |
---|---|---|
*** harlowja has quit IRC | 02:20 | |
*** gongysh has quit IRC | 02:39 | |
rakhmerov | breton: yes, it converts context to json. It's here: https://github.com/openstack/mistral/blob/master/mistral/context.py#L248 | 02:53 |
kong | rakhmerov: did we have a demo in last meeting? is there any video i can see? | 03:01 |
kong | it was too late for me to attend the meeting :( | 03:02 |
rakhmerov | kong: yes, we did. We recorded it, Guy Shaanan should send a link to the recording soon | 03:02 |
rakhmerov | yeah, I know :( | 03:02 |
kong | rakhmerov: cool, looking forward to that | 03:02 |
rakhmerov | yep, it should be interesting for you | 03:02 |
kong | rakhmerov, d0ugal, https://review.openstack.org/#/c/460351/ is ready | 03:21 |
kong | also tested it on my multi-region environment | 03:22 |
kong | using nova.hypervisors_statistics action | 03:22 |
rakhmerov | kong: done | 03:23 |
*** mbrennan has joined #openstack-mistral | 03:25 | |
kong | rakhmerov: ta! | 03:25 |
rakhmerov | :) | 03:25 |
rakhmerov | kong: sorry that it's been taking that long | 03:25 |
kong | rakhmerov: that's all right. I have used that patch on my own mistral deployment for a while. | 03:26 |
rakhmerov | ok | 03:27 |
rakhmerov | :) | 03:27 |
*** mbrennan has quit IRC | 03:30 | |
*** sharat has joined #openstack-mistral | 04:49 | |
*** sharatss_ has joined #openstack-mistral | 05:06 | |
*** sharat has quit IRC | 05:06 | |
openstackgerrit | Sharat Sharma proposed openstack/python-mistralclient master: [WIP] Use keystoneauth plugins and session instead of keystoneclient https://review.openstack.org/455174 | 05:08 |
*** jamielennox is now known as jamielennox|away | 05:10 | |
openstackgerrit | Adriano Petrich proposed openstack/mistral master: Adding log to db_sync https://review.openstack.org/464010 | 05:17 |
*** jamielennox|away is now known as jamielennox | 05:30 | |
*** livelace has joined #openstack-mistral | 05:36 | |
*** harlowja has joined #openstack-mistral | 05:47 | |
openstackgerrit | Sharat Sharma proposed openstack/python-mistralclient master: [WIP] Use keystoneauth plugins and session instead of keystoneclient https://review.openstack.org/455174 | 05:58 |
*** gongysh has joined #openstack-mistral | 06:27 | |
*** gongysh has quit IRC | 06:35 | |
*** luigiOpenstack_ has joined #openstack-mistral | 06:43 | |
luigiOpenstack_ | Can anyone please help me to work on Openstack workflow with luigi? | 06:44 |
*** harlowja has quit IRC | 06:50 | |
*** sharatss_ has quit IRC | 06:52 | |
*** jaosorior has quit IRC | 06:53 | |
luigiOpenstack_ | any help? | 06:58 |
rakhmerov | luigiOpenstack_: hey, can you share more details what you want to do? | 07:00 |
luigiOpenstack_ | I have a very simple scenario right now to check how Luigi will work with Openstack | 07:01 |
luigiOpenstack_ | so I want to list images for example | 07:01 |
luigiOpenstack_ | using Luigi how can I get that output after successful authentication | 07:01 |
luigiOpenstack_ | I think task A can be successful authentication | 07:02 |
luigiOpenstack_ | once authenticated, task B could be to list images | 07:02 |
rakhmerov | luigiOpenstack_: do you already have some workflow example that we could look at? | 07:03 |
luigiOpenstack_ | Not really...this is the first one so I am struggling. | 07:03 |
*** jamielennox is now known as jamielennox|away | 07:07 | |
luigiOpenstack_ | something like this | 07:08 |
luigiOpenstack_ | import luigi import os_client_config class LookupParametersTask(luigi.Task): # pass This could look for openstack env parameters #nova = os_client_config.make_client('compute') class CreateEnvironmentTask(luigi.Task): def requires(self): def run(self): pass def output(self): return{'images':self.glance.images.list()} if _name_ == '__main__': luigi.run() | 07:08 |
*** sharatss_ has joined #openstack-mistral | 07:11 | |
*** brunograz has joined #openstack-mistral | 07:11 | |
luigiOpenstack_ | @rakhmerov : anything? | 07:22 |
*** jamielennox|away is now known as jamielennox | 07:34 | |
openstackgerrit | Merged openstack/mistral master: Add "action_region" param for OpenStack actions https://review.openstack.org/460351 | 07:36 |
*** jaosorior has joined #openstack-mistral | 07:43 | |
*** jpich has joined #openstack-mistral | 07:53 | |
rakhmerov | luigiOpenstack_: not sure how it relates to Mistral. Does it? | 08:06 |
*** sharatss_ has quit IRC | 08:07 | |
*** sharatss_ has joined #openstack-mistral | 08:08 | |
luigiOpenstack_ | its not related to mistral | 08:08 |
luigiOpenstack_ | but its kind of a replacement to mistral | 08:08 |
rakhmerov | :) | 08:09 |
apetrich_ | I had a hard time reading those messages until the last one that I understood Luigi is a software not someone that refers to himself in the third person | 08:12 |
rakhmerov | luigiOpenstack_: please use http://paste.openstack.org for posting code and log snippents | 08:12 |
rakhmerov | apetrich_: same to me ) | 08:12 |
rakhmerov | I'm not even familiar with it | 08:13 |
rakhmerov | luigiOpenstack_: what is this project for? | 08:13 |
luigiOpenstack_ | this is just a thought that instead of being dependent on ansible for the workflows we would want to create python scripts | 08:13 |
luigiOpenstack_ | and use luigi for CI | 08:14 |
rakhmerov | is there any web page (wiki etc.) about it? | 08:14 |
rakhmerov | it's hard to help if we don't understand well what you're trying to do | 08:14 |
luigiOpenstack_ | yes | 08:14 |
luigiOpenstack_ | its limited though | 08:14 |
luigiOpenstack_ | https://github.com/spotify/luigi | 08:15 |
luigiOpenstack_ | https://luigi.readthedocs.io/en/latest/index.html | 08:15 |
rakhmerov | and here we discuss Mistral topics, not sure if it's related to us honestly | 08:15 |
luigiOpenstack_ | I understand | 08:15 |
luigiOpenstack_ | any other IRC that could be helpful? | 08:16 |
rakhmerov | you can probably use the main OpenStack mailing list | 08:17 |
rakhmerov | for general OpenStack questions | 08:17 |
d0ugal | I think it is only related because Luigi is a workflow management etc. | 08:20 |
d0ugal | so it is similar to Mistral | 08:20 |
d0ugal | it comes from Spotify | 08:20 |
*** jaosorior is now known as jaosorior_lunch | 08:20 | |
luigiOpenstack_ | yes | 08:20 |
rakhmerov | d0ugal: yeah, lots of things name themselves "workflow management", but then it turns that it's something completely different | 08:21 |
d0ugal | Airflow is another, that comes from Airbnb | 08:21 |
d0ugal | rakhmerov: good to know :) I have been meaning to try it but I have not yet. | 08:21 |
d0ugal | oh, Airflow is now an Apache project - interesting. | 08:21 |
d0ugal | Anyway, back to Mistral :) | 08:22 |
rakhmerov | d0ugal: on a different topic, when Red Hat is building RPMs out of a stable branch, what commit is taken? Only tagged with a version or just latest from the branch? | 08:22 |
d0ugal | rakhmerov: well, that depends :) | 08:23 |
d0ugal | rakhmerov: are you thinking about backports? | 08:23 |
rakhmerov | depends on what? | 08:23 |
rakhmerov | yes | 08:23 |
d0ugal | Right, then I think it is based on the stable branch - but I can check if you like | 08:23 |
d0ugal | rakhmerov: honestly I don't know that much about our downstream packaging - I only know a bit about RDO packages. | 08:24 |
rakhmerov | yeah, I'm trying to find out that | 08:24 |
d0ugal | rakhmerov: I'll ask - which version? Ocata? | 08:25 |
rakhmerov | I need to know that pretty urgently because we're expecting new RPMs and I need to know what's going to be in them | 08:25 |
rakhmerov | Ocata, yes | 08:25 |
d0ugal | rakhmerov: I've asked in our internal IRC - it might be quicker to use the official support lines if you can | 08:27 |
d0ugal | but I'll see what I can do | 08:27 |
rakhmerov | d0ugal: no worries ) | 08:28 |
rakhmerov | we'll ask officially | 08:28 |
d0ugal | thanks | 08:29 |
d0ugal | apetrich_: I checked out the devstack errors on your patch, i'm 99% sure they are unrelated. | 08:29 |
d0ugal | and they changed a bit in the recheck :-D | 08:29 |
apetrich_ | d0ugal, thanks for checking. I have the same conclusion | 08:30 |
d0ugal | rakhmerov: if you do find out about the packaging question - I'd like to know the answer. I am struggling to find out! :/ | 09:04 |
rakhmerov | ok | 09:04 |
openstackgerrit | Merged openstack/mistral master: Adding log to db_sync https://review.openstack.org/464010 | 09:04 |
*** jaosorior_lunch is now known as jaosorior | 09:15 | |
breton | i am trying to fix https://bugs.launchpad.net/mistral/+bug/1690787 now | 09:18 |
openstack | Launchpad bug 1690787 in Mistral "cron trigger uses trust-scoped token to create another token" [High,New] | 09:18 |
breton | and it is quite limiting that context in mistral should be serializable | 09:20 |
*** sharatss_ has quit IRC | 09:20 | |
breton | because a session should be shared by all openstack clients in actions/openstack/actions.py | 09:21 |
breton | and from what i can see, the only way to share something among clients is via context | 09:21 |
breton | and session cannot be serialized | 09:21 |
*** sharatss_ has joined #openstack-mistral | 09:23 | |
breton | on the other hand, keystoneauth cannot take for granted that a token is fine | 09:24 |
breton | it doesn't help; but if it could, it would not fix the root cause | 09:28 |
therve | breton, You don't need to serialize the session, you can recreate it with the necessary data | 09:30 |
therve | Heat uses the same pattern and it works fine | 09:32 |
breton | therve: and store it again in the context? | 09:36 |
therve | breton, Sure just set it as an attribute of the context when you load it | 09:36 |
openstackgerrit | Renat Akhmerov proposed openstack/mistral master: WIP: refactoring methods in db models https://review.openstack.org/465001 | 09:39 |
openstackgerrit | Renat Akhmerov proposed openstack/mistral master: Refactor db model methods https://review.openstack.org/465001 | 09:51 |
*** luigiOpenstack_ has quit IRC | 09:55 | |
*** shardy has joined #openstack-mistral | 09:57 | |
openstackgerrit | Lingxian Kong proposed openstack/mistral master: Add release note for "action_region" support https://review.openstack.org/465015 | 10:13 |
*** sharatss_ has quit IRC | 10:17 | |
*** sharatss_ has joined #openstack-mistral | 10:17 | |
*** thrash|g0ne is now known as thrash | 10:18 | |
openstackgerrit | Lingxian Kong proposed openstack/mistral-specs master: Move multi-region-support to implemented folder https://review.openstack.org/465017 | 10:22 |
openstackgerrit | Sharat Sharma proposed openstack/python-mistralclient master: [WIP] Use keystoneauth plugins and session instead of keystoneclient https://review.openstack.org/455174 | 10:23 |
openstackgerrit | Sharat Sharma proposed openstack/python-mistralclient master: [WIP] Use keystoneauth plugins and session instead of keystoneclient https://review.openstack.org/455174 | 10:30 |
*** jkilpatr has quit IRC | 10:41 | |
*** jkilpatr has joined #openstack-mistral | 10:59 | |
*** shardy is now known as shardy_lunch | 11:10 | |
breton | therve: what would be the best place to put session instantiation then? ./mistral/engine/engine_server.py? Default engine? | 11:21 |
openstackgerrit | Sharat Sharma proposed openstack/python-mistralclient master: Use keystoneauth plugins and session instead of keystoneclient https://review.openstack.org/455174 | 11:23 |
therve | breton, Well, most likely when the context is created? | 11:23 |
therve | You can also simply make it a property of the context, which is loaded dynamically | 11:24 |
therve | (Side note: mistral.service and mistral.services are insane...) | 11:24 |
breton | oh, i see | 11:28 |
breton | so the session will not get serialized and will be accessed by just ctx.auth_session? | 11:28 |
therve | Yeah | 11:33 |
*** abishop has quit IRC | 11:35 | |
*** shardy_lunch is now known as shardy | 11:50 | |
*** abishop has joined #openstack-mistral | 12:06 | |
*** abishop has quit IRC | 12:06 | |
*** sharatss_ has quit IRC | 12:11 | |
*** sharatss_ has joined #openstack-mistral | 12:29 | |
*** dprince has joined #openstack-mistral | 12:38 | |
*** mbrennan has joined #openstack-mistral | 12:42 | |
openstackgerrit | Sharat Sharma proposed openstack/python-mistralclient master: Use keystoneauth plugins and session instead of keystoneclient https://review.openstack.org/455174 | 13:16 |
*** sharatss_ has quit IRC | 13:20 | |
*** mbrennan has quit IRC | 13:34 | |
*** jrist has quit IRC | 13:43 | |
openstackgerrit | luong tuan proposed openstack/mistral master: Refactor mistral context using oslo_context https://review.openstack.org/455407 | 13:49 |
*** gfidente has joined #openstack-mistral | 13:51 | |
*** jaosorior is now known as jaosorior_away | 14:00 | |
toure | win 15 | 14:15 |
d0ugal | I assume pause-before happens at the start of a task and not for each items in with-items? | 14:17 |
gfidente | d0ugal I am finally back at the mistral environment issue | 14:20 |
gfidente | have a few cycles to help? | 14:20 |
d0ugal | gfidente: sure, what's up? | 14:20 |
gfidente | so I think I am just looking for a working example of a workflow consuming a variable from a global environment | 14:20 |
gfidente | and one of a workflow consuming a variable from an execution environment | 14:20 |
gfidente | the $.__env. syntax doesn't even work with my version of the client | 14:21 |
gfidente | ERROR (app) Lexical error: illegal character '_' at position 3 | 14:21 |
gfidente | <% $.__env.mine.foo1 %> | 14:22 |
gfidente | (I had an environment named mine with a variable named foo1) | 14:22 |
gfidente | what I am doing wrong? | 14:22 |
d0ugal | gfidente: Good question. Give me a few mins and I'll try and get an example - I have not actually used this yet. | 14:23 |
gfidente | I am not sure if the scope of the environment set to private | 14:23 |
gfidente | by default | 14:24 |
gfidente | is hiding it | 14:24 |
gfidente | but given I get a syntax error I think I am not even getting to that part | 14:24 |
gfidente | it's also unclear to me the syntax to consume variables from the execution environment | 14:25 |
gfidente | looking at execution, I think to pass an execution environment I should use params: env: key:value | 14:29 |
gfidente | but then again I am not sure how to consume it from within the workflow | 14:29 |
gfidente | rakhmerov actually I see you on the execution environment spec | 14:41 |
gfidente | rakhmerov maybe you can help understand how to use it? | 14:41 |
d0ugal | gfidente: rakhmerov probably knows :) but he isn't usually around now | 14:42 |
gfidente | I went through the submissions linked to the spec in the hope of finding an .rst somewhere | 14:42 |
d0ugal | gfidente: I think this stuff is older than specs | 14:42 |
d0ugal | and older than docs lol | 14:43 |
gfidente | YaqlEvaluationException: Can not evaluate YAQL expression [expression=$.env.foo1, error=u'env', data={} | 14:43 |
gfidente | this stuff is killing me | 14:43 |
d0ugal | gfidente: have you tried env() | 14:43 |
gfidente | seems like data in yaql is empty | 14:43 |
d0ugal | <% env().foo1 $> | 14:43 |
d0ugal | <% env().foo1 %> | 14:43 |
gfidente | I can | 14:43 |
d0ugal | That is what I am testing | 14:44 |
gfidente | that worked | 14:44 |
gfidente | wow | 14:45 |
gfidente | so how do I get to a global environment? | 14:45 |
d0ugal | gfidente: what do you mean by global environment? | 14:45 |
gfidente | one of those created with environment-create | 14:45 |
d0ugal | gfidente: ah, that I don't know | 14:45 |
d0ugal | I have been meaning to find out, because I didn't understand it but I've not yet. | 14:46 |
d0ugal | gfidente: maybe you can pass env a name? | 14:46 |
d0ugal | but that might be too logical :) | 14:46 |
* d0ugal looks at the code | 14:46 | |
d0ugal | Seems not. It is super simple. | 14:47 |
d0ugal | https://github.com/openstack/mistral/blob/master/mistral/utils/expression_utils.py#L99-L100 | 14:47 |
d0ugal | gfidente: do you just need to get it? or do you need to update it too? | 14:47 |
gfidente | d0ugal yeah that's yet another issue | 14:48 |
therve | gfidente, I think you pass a string as a env in parameters | 14:48 |
* therve finds the code | 14:48 | |
gfidente | therve yes that worked now | 14:48 |
gfidente | sets an execution env | 14:48 |
therve | gfidente, https://github.com/openstack/mistral/blob/master/mistral/engine/workflows.py#L428 | 14:48 |
therve | I don't know if you can access any arbitrary env | 14:49 |
*** bobh has joined #openstack-mistral | 14:49 | |
gfidente | therve but on the other hand we probably don't want to use the global ones anyway | 14:49 |
therve | Yeah | 14:50 |
gfidente | so I guess, going back to the resource | 14:50 |
gfidente | we probably need to save this in the heat resource itself | 14:50 |
therve | Oh yeah don't create a mistral environment object | 14:50 |
gfidente | let's see if i can come up with something | 14:51 |
gfidente | thanks guys | 14:51 |
d0ugal | i would like to know what the mistral environments are for | 14:52 |
d0ugal | why ever create them | 14:52 |
gfidente | to talk on irc | 14:52 |
d0ugal | lol | 14:52 |
gfidente | like weather | 14:52 |
d0ugal | we need something to talk about | 14:52 |
d0ugal | Hows your environment doing today? | 14:52 |
gfidente | no I think the scope property | 14:52 |
gfidente | is interesting | 14:52 |
gfidente | if the scope could match multiple workflows with a regexp for example | 14:53 |
therve | That's a solution looking for a problem | 14:53 |
therve | But it can have its uses | 14:53 |
gfidente | right | 14:53 |
d0ugal | :) | 14:53 |
therve | eg: you store an environment called "private-team-X" with an image name. | 14:53 |
d0ugal | So far I have only seen it abused as a key value store :( | 14:54 |
therve | When you update that image, you can change the id in it | 14:54 |
therve | All your workflows will benefit it | 14:54 |
therve | And you can run you workflow in different "environments" without changing it | 14:54 |
gfidente | all your base are belong to us | 14:54 |
gfidente | https://it.wikipedia.org/wiki/All_your_base_are_belong_to_us | 14:54 |
gfidente | better | 14:55 |
gfidente | https://en.wikipedia.org/wiki/All_your_base_are_belong_to_us | 14:55 |
d0ugal | lol | 14:55 |
gfidente | all your environment are belong to us in this case | 14:55 |
gfidente | but gfidente doesn't know how to use it | 14:56 |
gfidente | so it's worthless | 14:56 |
gfidente | anyway | 14:56 |
d0ugal | :( | 14:57 |
d0ugal | gfidente: How did you get env() to work? | 14:57 |
d0ugal | I can't even do that now. | 14:57 |
gfidente | pass {"env": {"key":"value"}} to an execution | 14:58 |
gfidente | as params | 14:58 |
gfidente | which is what therve wants the heat resource to do as well | 14:58 |
d0ugal | oh, wow, you need to include env in the json! | 14:58 |
gfidente | yeah | 14:59 |
gfidente | in the execution json | 14:59 |
d0ugal | That is what I was doing wrong - got that working now anyway | 14:59 |
*** tuan_ has joined #openstack-mistral | 15:01 | |
openstackgerrit | Merged openstack/mistral master: Remove unused logging import https://review.openstack.org/461654 | 15:03 |
openstackgerrit | Merged openstack/mistral master: Add release note for "action_region" support https://review.openstack.org/465015 | 15:03 |
*** thrash is now known as thrash|bbl | 15:18 | |
tuan_ | Hi guys | 15:26 |
tuan_ | if someone there | 15:26 |
tuan_ | could you please review this patch | 15:27 |
tuan_ | PS19 | 15:27 |
tuan_ | https://review.openstack.org/#/c/455407/19 | 15:27 |
tuan_ | i was quite tired about this one since it modifies the mistral context | 15:27 |
tuan_ | and it has alot of conflicts since someone else is modifying context too | 15:27 |
tuan_ | this patch is on top of master | 15:27 |
tuan_ | therefore i always have to fix the conflict all the time | 15:28 |
tuan_ | :D | 15:28 |
tuan_ | and now this one has conflict again with the current modification of context | 15:28 |
tuan_ | which is done by Kong | 15:28 |
tuan_ | :) | 15:29 |
* d0ugal starts writing a patch that refactors the context | 15:29 | |
d0ugal | ;) | 15:30 |
d0ugal | tuan_: I probably wont have time today, but I'll try and look tomorrow morning first thing | 15:30 |
d0ugal | feel free to remind me! | 15:30 |
tuan_ | okay, i wrote your name in my calendar | 15:33 |
tuan_ | :) | 15:33 |
tuan_ | thanks a lot | 15:33 |
tuan_ | and the PS19 was +1 before it went to conflict | 15:34 |
*** gfidente is now known as gfidente|afk | 15:40 | |
breton | where is MistralContext constructed after being transmitted over rpc? | 15:52 |
breton | oh, i see, in _on_message | 15:53 |
*** tuan_ has quit IRC | 16:06 | |
*** jpich has quit IRC | 16:24 | |
*** shardy_ has quit IRC | 16:46 | |
*** thrash|bbl is now known as thrash | 16:52 | |
*** mbrennan has joined #openstack-mistral | 17:01 | |
*** shardy has quit IRC | 17:04 | |
*** mbrennan has quit IRC | 17:06 | |
*** mbrennan has joined #openstack-mistral | 17:27 | |
*** mbrennan has quit IRC | 17:27 | |
*** mbrennan has joined #openstack-mistral | 17:28 | |
*** kbaegis has joined #openstack-mistral | 17:30 | |
kbaegis | Hi all. Can someone walk me through the mistral operations for starting a heat template? | 17:30 |
kbaegis | Do I need to use heat.stacks_template or heat.stacks_create? | 17:30 |
kbaegis | Seems to be challenging converting a complex heat template w/ userdata into a json object for mistral | 17:32 |
*** harlowja has joined #openstack-mistral | 17:50 | |
kbaegis | Anyone? | 17:50 |
*** bobh has quit IRC | 17:51 | |
*** jkilpatr_ has joined #openstack-mistral | 18:17 | |
*** openstackgerrit has quit IRC | 18:17 | |
*** jkilpatr has quit IRC | 18:20 | |
*** bobh has joined #openstack-mistral | 18:21 | |
*** mbrennan has quit IRC | 18:25 | |
*** bobh has quit IRC | 18:54 | |
*** harlowja has quit IRC | 19:17 | |
*** gfidente|afk has quit IRC | 19:36 | |
*** jkilpatr_ has quit IRC | 19:40 | |
*** livelace has quit IRC | 19:43 | |
*** kbaegis has quit IRC | 20:02 | |
*** harlowja has joined #openstack-mistral | 20:04 | |
*** bobh has joined #openstack-mistral | 20:13 | |
*** dprince has quit IRC | 20:37 | |
*** openstackgerrit has joined #openstack-mistral | 20:47 | |
openstackgerrit | Bob Haddleton proposed openstack/mistral master: Update AdHoc Actions to support context data references in YAQL/Jinja expressions https://review.openstack.org/464677 | 20:47 |
*** jkilpatr has joined #openstack-mistral | 20:53 | |
*** kbaegis has joined #openstack-mistral | 20:55 | |
*** kbaegis has left #openstack-mistral | 21:01 | |
*** kbaegis has joined #openstack-mistral | 21:02 | |
*** bobh has quit IRC | 21:02 | |
*** bobh has joined #openstack-mistral | 21:03 | |
*** kbaegis has quit IRC | 21:06 | |
*** bobh has quit IRC | 21:08 | |
*** jkilpatr has quit IRC | 21:19 | |
*** jkilpatr has joined #openstack-mistral | 22:03 | |
*** thrash is now known as thrash|g0ne | 22:03 |
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!