*** zhurong has joined #senlin | 00:28 | |
*** yanyanhu has joined #senlin | 01:23 | |
yanyanhu | hi, Qiming, around? | 01:40 |
---|---|---|
yanyanhu | I think we may need to wait more time for our mascot | 01:40 |
yanyanhu | just got reply from Heidi and she said the design is still in progress | 01:40 |
yanyanhu | and she said we will get it before PTG | 01:40 |
*** wllabs has joined #senlin | 02:29 | |
*** zhurong has quit IRC | 03:39 | |
*** Jeffrey4l__ has joined #senlin | 04:11 | |
*** Jeffrey4l_ has quit IRC | 04:14 | |
*** wllabs has quit IRC | 05:31 | |
*** wllabs has joined #senlin | 05:34 | |
yanyanhu | hi, XueFeng, around? | 05:46 |
XueFeng | hi,YanYan | 05:58 |
XueFeng | I have reserved a high-speed rail ticket for tomorrow afternoon. | 06:01 |
yanyanhu | XueFeng, great, looking forward to see u this weekend :) | 06:18 |
yanyanhu | btw, if you have time this afternoon, maybe I can give u a simple introduction about setting up gate job | 06:18 |
*** zhurong has joined #senlin | 06:23 | |
XueFeng | YanYan, now I have time:) | 06:29 |
yanyanhu | XueFeng, ok, plz give me 10 minutes, will ping you soon :) | 06:42 |
XueFeng | OK | 06:43 |
yanyanhu | hi, XueFeng, sorry let you wait | 06:58 |
yanyanhu | so here is the patch I proposed to add senlin functional test | 06:58 |
yanyanhu | https://review.openstack.org/#/c/209736/ | 06:58 |
XueFeng | OK, let me see it | 06:58 |
yanyanhu | yes, and I can give you a simple introduction about it | 06:59 |
yanyanhu | actually, functional test is one or more jobs running at gate side | 06:59 |
yanyanhu | the project maintainers are responsible to define the job(s) and OpenStack CI will run it based on the job description | 07:00 |
yanyanhu | and the definition of a job is maintained in project-config repo | 07:01 |
XueFeng | If there are some docs for this? | 07:01 |
yanyanhu | so if you want to add a new test job at gateside, you need to propose a patch to openstack-infra/project-config | 07:01 |
XueFeng | I see, this patch is propose to openstack-infra/project-config | 07:02 |
XueFeng | s/propose/proposed | 07:02 |
yanyanhu | XueFeng, not so sure, I tried to search the formal guide, but didn't find it. Of course, that was about 1 and half years ago | 07:02 |
yanyanhu | :) | 07:02 |
yanyanhu | but you can find some excellent articles to introduce openstack CI system | 07:02 |
yanyanhu | which are very helpful for you to understand how OpenStack CI works | 07:03 |
yanyanhu | let me search it for you later | 07:03 |
yanyanhu | after introducing the patch :) | 07:03 |
XueFeng | hmm, I see. | 07:03 |
yanyanhu | http://docs.openstack.org/infra/system-config/running-your-own.html | 07:04 |
yanyanhu | this is a good one | 07:04 |
XueFeng | OK, this doc seems good | 07:05 |
yanyanhu | and this is the catalogue for all contents about OpenStack CI | 07:05 |
yanyanhu | http://docs.openstack.org/infra/system-config/ | 07:05 |
yanyanhu | yep, the latter one is even better, just much more huge :) | 07:05 |
yanyanhu | definitely worthy to read | 07:05 |
yanyanhu | ok, about the patch | 07:06 |
yanyanhu | the first file need to change is "/jenkins/jobs/projects.yaml" | 07:06 |
XueFeng | Will read. So the first thing is to study the patch and the articles | 07:06 |
yanyanhu | yep | 07:07 |
yanyanhu | every projects are required to list the jobs they want to run in gate in projects.yaml | 07:07 |
yanyanhu | e.g. for senlin service, here is the list: http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/projects.yaml#n13138 | 07:09 |
yanyanhu | something like "- python-jobs" | 07:09 |
yanyanhu | or "openstack-releasenotes-jobs" are default jobs which could be run by all projects | 07:10 |
yanyanhu | and some ones are defined specifically for senlin project, like '{pipeline}-senlin-dsvm-tempest-{test_type}{suffix}' | 07:10 |
yanyanhu | and '{pipeline}-senlin-dsvm-tempest-{test_type}{suffix}' | 07:10 |
yanyanhu | the job name can include a regex | 07:12 |
yanyanhu | e.g. {pipeline}, {test_type} | 07:12 |
yanyanhu | in tempest test | 07:13 |
yanyanhu | for example ,test_type can be api, functional, integration | 07:13 |
XueFeng | I see | 07:13 |
yanyanhu | so basically, this is the place you define which jobs you want to run | 07:14 |
yanyanhu | when a new patch is posted to gerrit | 07:14 |
yanyanhu | or reverify/recheck is triggered | 07:14 |
yanyanhu | and for senlinclient, here is the job list | 07:15 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/projects.yaml#n12363 | 07:15 |
yanyanhu | you can add functional test job here | 07:15 |
yanyanhu | referring to the one defined for openstack/senlin project | 07:15 |
yanyanhu | you can see, there are only 4 default jobs are enabled currently | 07:16 |
yanyanhu | jobs: | 07:16 |
yanyanhu | - python-jobs | 07:16 |
yanyanhu | - openstack-releasenotes-jobs | 07:16 |
yanyanhu | - pypi-jobs | 07:16 |
yanyanhu | - translation-jobs | 07:16 |
XueFeng | Yes | 07:16 |
yanyanhu | you can add one for functional test | 07:16 |
yanyanhu | ok, then lets go to "jenkins/jobs/senlin.yaml" | 07:17 |
yanyanhu | here it is | 07:17 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml | 07:17 |
XueFeng | good | 07:17 |
yanyanhu | here, job templates are defined for every job you want to run | 07:17 |
yanyanhu | (of course, for default jobs, we don't need to define them specifically) | 07:18 |
yanyanhu | gate will provide the definition | 07:18 |
yanyanhu | so we just need to focus on those ones defined for senlin specifically | 07:18 |
yanyanhu | the first place need to notice is the job name | 07:18 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n2 | 07:18 |
yanyanhu | like this | 07:18 |
XueFeng | That is to say, some jobs no need to update templates | 07:19 |
yanyanhu | it is a regex that must match to the name of those jobs you listed in projects.yaml | 07:19 |
yanyanhu | XueFeng, yes | 07:19 |
XueFeng | OK | 07:19 |
yanyanhu | after I introduce the senlin.yaml file, you will better understand it :) | 07:20 |
yanyanhu | ok, go back to job name | 07:20 |
XueFeng | :) | 07:20 |
yanyanhu | actually one job template can be used to match multiple jobs :) | 07:20 |
yanyanhu | based on the regex | 07:20 |
yanyanhu | for example, name: '{pipeline}-senlin-dsvm-tempest-{test_type}{suffix}' | 07:20 |
yanyanhu | it will match both tempest api, functional and integration test jobs | 07:21 |
XueFeng | I see | 07:21 |
yanyanhu | if you check the job names we defined in projects.yaml :) | 07:21 |
yanyanhu | usually, we will try to match as many as jobs using a simple template | 07:22 |
yanyanhu | to reduce the code duplication | 07:22 |
yanyanhu | however, if you find it is really difficult to match a new job logic into any existing template, it's fine to define a new ont | 07:22 |
yanyanhu | s/ont/one | 07:22 |
XueFeng | OK | 07:22 |
yanyanhu | ok, so let check the content of the template | 07:23 |
yanyanhu | most part are the same for all test jobs | 07:23 |
yanyanhu | we just need to pay more attention on those places need to customize | 07:23 |
yanyanhu | e.g. timeout: 130 | 07:23 |
XueFeng | I see | 07:24 |
yanyanhu | and the most important part is the -shell section | 07:24 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n14 | 07:24 |
yanyanhu | here | 07:24 |
XueFeng | got it | 07:24 |
yanyanhu | if you have installed openstack using devstack, you may have understood what it is for :) | 07:24 |
yanyanhu | basically, it is for setting up the devstack options and environment variables to let devstack-gate to know which services you want to enable during the test | 07:25 |
yanyanhu | and where to get them | 07:25 |
yanyanhu | just like what we do manually before running devstack locally | 07:26 |
XueFeng | Yes, not very diffculty | 07:26 |
yanyanhu | yep | 07:26 |
yanyanhu | e.g. tempest is enabled: http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n19 | 07:26 |
yanyanhu | senlin is enabled too :) | 07:27 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n23 | 07:27 |
yanyanhu | for we are adding a test job for senlinclient, so I think you need to add senlinclient to the enabled service list | 07:27 |
yanyanhu | as a plugin as what we did for other service, like heat, zaqar | 07:28 |
yanyanhu | you can also refer to the job templates of those services who have already enabled functional test for client | 07:30 |
yanyanhu | like heat, http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/heat.yaml#n189 | 07:30 |
XueFeng | Also add senlinclient plugin in senlin.yaml? | 07:30 |
XueFeng | Can't found selinclient.yaml | 07:31 |
yanyanhu | yes, add senlinclient plugin | 07:31 |
yanyanhu | no need to add senlinclient.yaml | 07:31 |
yanyanhu | just defining a new job in senlin.yaml is ok | 07:31 |
XueFeng | OK | 07:32 |
yanyanhu | I think this is a good example | 07:32 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/heat.yaml#n189 | 07:32 |
yanyanhu | another place need to pay attention is here: http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n50 | 07:33 |
yanyanhu | devstack-gate allows you to define hooks which will be run BEFORE and AFTER devstack installation | 07:34 |
yanyanhu | so this one is pre-test-hook | 07:34 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n50 | 07:34 |
XueFeng | I see | 07:34 |
yanyanhu | and this is the posr-test-one | 07:34 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n56 | 07:34 |
XueFeng | OK | 07:35 |
yanyanhu | here is the pre_test_hook defined in senlin repo | 07:35 |
yanyanhu | http://git.openstack.org/cgit/openstack/senlin/tree/senlin/tests/tempest/pre_test_hook.sh | 07:35 |
XueFeng | Ask a question, where is the server to run the job? | 07:35 |
yanyanhu | actually this script customizes the local.conf | 07:36 |
yanyanhu | which will be used by devstack during installation | 07:36 |
yanyanhu | XueFeng, oh, those servers are maintained by infrastructure team | 07:36 |
yanyanhu | and are donated by different sponsors | 07:36 |
yanyanhu | to support OpenStack CI | 07:36 |
yanyanhu | that is a great system :) | 07:36 |
yanyanhu | very execllent | 07:37 |
XueFeng | OK | 07:37 |
XueFeng | :) | 07:37 |
yanyanhu | for project maintainer, we don't need to worry about it :) | 07:37 |
XueFeng | Got it | 07:37 |
yanyanhu | we just need to know gate will perform test jobs per our requests | 07:38 |
yanyanhu | oh, of course, for the resource is limitation, so we should consider carefully to reduce the overhead of running test as much as possible | 07:38 |
yanyanhu | e.g. for doc related change, we don't need to run api / functional test :) | 07:39 |
yanyanhu | and if we only need to test senlin and senlinclient, we don't need to install some services unrelated | 07:39 |
XueFeng | I see. | 07:39 |
yanyanhu | great :) | 07:39 |
yanyanhu | so this is the job template | 07:39 |
yanyanhu | oh, sorry forgot the post_test_hook script | 07:40 |
yanyanhu | this one | 07:40 |
yanyanhu | http://git.openstack.org/cgit/openstack/senlin/tree/senlin/tests/tempest/post_test_hook.sh | 07:40 |
yanyanhu | this script will be run AFTER devstack installation is done at gate side, but BEFORE test job is running | 07:41 |
yanyanhu | for senlin test, there is no special operation need to do, we just export some standard path and source openrc | 07:42 |
XueFeng | Hmm, the script is in the same directory with senlin.yaml | 07:42 |
yanyanhu | you mean this script? | 07:42 |
yanyanhu | http://git.openstack.org/cgit/openstack/senlin/tree/senlin/tests/tempest/post_test_hook.sh | 07:42 |
yanyanhu | no, those two scripts are defined in senlin rpo | 07:42 |
yanyanhu | repo | 07:42 |
XueFeng | Oh ,no .There is a cd command | 07:42 |
yanyanhu | yes, devstack-gate will git clone senlin repo first | 07:43 |
yanyanhu | and then jump to the dir for the scripts | 07:43 |
XueFeng | OK | 07:43 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/jenkins/jobs/senlin.yaml#n51 | 07:43 |
yanyanhu | here | 07:43 |
yanyanhu | ok, so after job template is defined, the patch have almost been done | 07:44 |
yanyanhu | the last thing is to change zuul/layout.yaml | 07:44 |
XueFeng | yes | 07:44 |
yanyanhu | this file defines the rule to run each job | 07:45 |
yanyanhu | e.g. for senlin | 07:45 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/zuul/layout.yaml#n16590 | 07:45 |
yanyanhu | there are several sections here | 07:45 |
yanyanhu | template is the default one | 07:46 |
yanyanhu | check is for the first time patch is proposed and also recheck is triggered | 07:46 |
yanyanhu | gate is for workflow is triggered(in case you workflow+1 a patch :) | 07:46 |
yanyanhu | and experimental is for the case "check experimental" is triggered in gerrit review | 07:47 |
yanyanhu | so these are different timings to run test jobs | 07:47 |
yanyanhu | and for senlin, these file jobs will be run if a new patchset is proposed or recheck is triggered: | 07:48 |
yanyanhu | - senlin-coverage-ubuntu-trusty | 07:48 |
yanyanhu | - senlin-coverage-ubuntu-xenial | 07:48 |
yanyanhu | - gate-senlin-dsvm-tempest-api | 07:48 |
yanyanhu | - gate-senlin-dsvm-tempest-functional | 07:48 |
yanyanhu | - gate-senlin-dsvm-tempest-integration-nv | 07:48 |
yanyanhu | s/file/five | 07:48 |
yanyanhu | and for workflow +1, we only run these two extra jobs: | 07:48 |
yanyanhu | - gate-senlin-dsvm-tempest-api | 07:48 |
yanyanhu | - gate-senlin-dsvm-tempest-functional | 07:48 |
XueFeng | Got it | 07:48 |
yanyanhu | those jobs defined in "template" section will always be run | 07:49 |
yanyanhu | you can see, for senlinclient, we just run default jobs | 07:49 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/zuul/layout.yaml#n15834 | 07:49 |
yanyanhu | what we need to do is adding functional test for check/gate | 07:50 |
yanyanhu | of course, at the beginning, you'd better add functional test job for senlinclient to "experimental" section | 07:50 |
yanyanhu | then you can manually trigger it and verify it works as expected | 07:50 |
yanyanhu | after you can ensure it works well, you can move it from experimental section to check and gate sections | 07:51 |
openstackgerrit | Merged openstack/senlin: Bump API micro-version to 1.5 https://review.openstack.org/417771 | 07:51 |
XueFeng | OK | 07:51 |
yanyanhu | another thing need attention is all jobs by default will VOTE for a change | 07:52 |
XueFeng | Yes | 07:52 |
yanyanhu | that means, once that test fails, jenkins will mark a patch to verify failure status | 07:53 |
yanyanhu | so you can change the vote status of a job to FALSE | 07:53 |
yanyanhu | to avoid it blocks the gate | 07:53 |
yanyanhu | like this | 07:53 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/zuul/layout.yaml#n1935 | 07:53 |
yanyanhu | the job name also includes regex for matching | 07:54 |
yanyanhu | once you want it to vote, you can just remove this definition | 07:54 |
XueFeng | Ok, need set False before new gate can be ran ok. | 07:55 |
yanyanhu | another useful feature is running test jobs with filter | 07:55 |
yanyanhu | XueFeng, exactly | 07:55 |
yanyanhu | look at here | 07:55 |
yanyanhu | http://git.openstack.org/cgit/openstack-infra/project-config/tree/zuul/layout.yaml#n3239 | 07:55 |
yanyanhu | this definition means the senlin tempest test jobs will be skipped once the change is made on the following files | 07:56 |
yanyanhu | that is what I said, we don't need to perform tempest test for doc only changes :) | 07:57 |
XueFeng | I see | 07:57 |
yanyanhu | so, that's all I know about how to setup test jobs in gate :) | 07:58 |
yanyanhu | you can have a try | 07:59 |
XueFeng | OK, thanks YanYan. | 07:59 |
yanyanhu | and please ping me if you meet any further issues | 07:59 |
yanyanhu | my pleasure :) | 07:59 |
yanyanhu | it could cost a while for setting up the job successfully | 07:59 |
yanyanhu | for it is not easy to verify it locally | 07:59 |
XueFeng | Yes | 08:00 |
yanyanhu | so before the patch works, you'd better to mark it as workflow -1 | 08:00 |
XueFeng | Will try ASAP | 08:00 |
yanyanhu | to reduce the review overhead of infra team | 08:00 |
XueFeng | OK | 08:00 |
yanyanhu | XueFeng, great, thanks a lot for working on this :) | 08:00 |
XueFeng | YanYan, thanks for detailing explanation again.If there is any question will ping you again:) | 08:03 |
yanyanhu | XueFeng, ok :) | 08:04 |
*** guoshan has joined #senlin | 08:08 | |
ruijie | hi yanyanhu, noticed you just talked about the test jobs | 08:10 |
ruijie | I saw an new workitem in etherpad which is about improving the tempest api test | 08:11 |
openstackgerrit | XueFeng Liu proposed openstack/senlin: Fix cluster-check cannot work problem https://review.openstack.org/417697 | 08:12 |
openstackgerrit | XueFeng Liu proposed openstack/senlin: Fix cluster-check cannot work problem https://review.openstack.org/417697 | 08:17 |
yanyanhu | hi, ruijie, sorry just left for a while | 08:23 |
yanyanhu | yes, there is a work item for enhancing tempest api test | 08:23 |
yanyanhu | but didn't got time to work on it | 08:23 |
yanyanhu | the basic idea is adding the exception message verification to ensure the exception raised is what we expect | 08:24 |
ruijie | yes yanyanhu | 08:25 |
ruijie | I mean we are using the tempest lib | 08:25 |
ruijie | the exception types in that lib may not match what we are using in Senlin | 08:26 |
ruijie | so we just assert the message raised, but not the exception types, right? | 08:26 |
yanyanhu | ruijie, yes, that is a potential issue. actually tempest rest client will make exception convert | 08:26 |
yanyanhu | ruijie, actually we want to verify the exception message :) | 08:27 |
yanyanhu | since it contains more information | 08:27 |
ruijie | seems not a hard work :) | 08:28 |
yanyanhu | e.g. exception message of a failed scaling request could include the following string "The target capacity (%(d)s) is less than the cluster's min_size (%(m)s)." | 08:28 |
yanyanhu | we just need to match it | 08:28 |
yanyanhu | ruijie, yes, technically, not difficult :) | 08:28 |
yanyanhu | just need to tell those different failure reasons | 08:29 |
ruijie | okay yanyanhu | 08:29 |
ruijie | and btw, out meetup is a team meeting or and public meeting? | 08:30 |
ruijie | our :) | 08:30 |
yanyanhu | a team meeting, but anyone who are interested in are welcome to join | 08:30 |
yanyanhu | :) | 08:30 |
yanyanhu | so you can treat it as a public meeting as well :) | 08:31 |
yanyanhu | just we don't make advertisement :) | 08:31 |
ruijie | thanks yanyanhu, cz one of my colleagues want to join, but I am not sure if it is an public one :) | 08:32 |
yanyanhu | definitely welcome :) | 08:32 |
yanyanhu | so please encourage them to come and discuss with us | 08:32 |
ruijie | thanks yanyanhu, will tell him this msg :) | 08:33 |
yanyanhu | great, thanks | 08:33 |
*** lixinhui has quit IRC | 09:21 | |
wllabs | newton verstion of heat don't have LBaaS resource type ? | 09:28 |
*** zhurong has quit IRC | 09:44 | |
*** yanyanhu has quit IRC | 09:54 | |
*** AlexeyAbashkin has joined #senlin | 10:17 | |
*** zhurong has joined #senlin | 10:25 | |
*** elynn__ has quit IRC | 10:39 | |
*** Jeffrey4l__ is now known as Jeffrey4l | 10:58 | |
*** guoshan has quit IRC | 10:59 | |
*** zhurong has quit IRC | 11:15 | |
*** guoshan has joined #senlin | 12:00 | |
*** guoshan has quit IRC | 12:04 | |
openstackgerrit | XueFeng Liu proposed openstack/senlin: Fix cluster-check cannot work problem https://review.openstack.org/417697 | 12:19 |
wllabs | i am attach senlin.policy.health to cluster, then nova delete node, | 12:55 |
wllabs | the health policy don't react | 12:55 |
wllabs | why? | 12:56 |
Qiming | wllabs, it could be that nova didn't emit events | 13:12 |
Qiming | it could be you have things misconfigured in health policy | 13:13 |
*** ruijie has quit IRC | 13:15 | |
*** AlexeyAbashkin has quit IRC | 13:59 | |
*** guoshan has joined #senlin | 14:01 | |
*** AlexeyAbashkin has joined #senlin | 14:02 | |
*** guoshan has quit IRC | 14:05 | |
*** wllabs has quit IRC | 14:14 | |
*** AlexeyAbashkin has quit IRC | 14:45 | |
*** AlexeyAbashkin has joined #senlin | 15:28 | |
*** ruijie has joined #senlin | 15:39 | |
*** AlexeyAbashkin has quit IRC | 16:27 | |
*** Drago has joined #senlin | 16:37 | |
*** AlexeyAbashkin has joined #senlin | 17:59 | |
*** openstackgerrit has quit IRC | 18:33 | |
*** AlexeyAbashkin has quit IRC | 18:55 | |
*** AlexeyAbashkin has joined #senlin | 18:59 | |
*** AlexeyAbashkin has quit IRC | 19:01 | |
*** guoshan has joined #senlin | 19:05 | |
*** guoshan has quit IRC | 19:10 | |
-openstackstatus- NOTICE: Gerrit will be offline between now and 20:30 for scheduled maintenance: http://lists.openstack.org/pipermail/openstack-dev/2017-January/109910.html | 20:11 | |
*** ChanServ changes topic to "Gerrit will be offline between now and 20:30 for scheduled maintenance: http://lists.openstack.org/pipermail/openstack-dev/2017-January/109910.html" | 20:11 | |
-openstackstatus- NOTICE: Updated: Gerrit will be offline until 20:45 for scheduled maintenance (running longer than anticipated): http://lists.openstack.org/pipermail/openstack-dev/2017-January/109910.html | 20:36 | |
*** ChanServ changes topic to "Updated: Gerrit will be offline until 20:45 for scheduled maintenance (running longer than anticipated): http://lists.openstack.org/pipermail/openstack-dev/2017-January/109910.html" | 20:36 | |
*** AlexeyAbashkin has joined #senlin | 20:44 | |
*** ChanServ changes topic to "IRCLog: http://eavesdrop.openstack.org/irclogs/%23senlin/ | Bugs: bugs.launchpad.net/senlin | Review: https://review.openstack.org/#/q/project:openstack/senlin,n,z" | 20:54 | |
*** AlexeyAbashkin has quit IRC | 20:59 | |
*** Jeffrey4l has quit IRC | 21:34 | |
*** Drago has quit IRC | 22:37 | |
*** Drago has joined #senlin | 23:08 | |
*** Jeffrey4l has joined #senlin | 23:37 |
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!