17:07:02 #startmeeting Rally 17:07:03 Meeting started Tue Oct 28 17:07:02 2014 UTC and is due to finish in 60 minutes. The chair is boris-42. Information about MeetBot at http://wiki.debian.org/MeetBot. 17:07:04 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 17:07:06 The meeting name has been set to 'rally' 17:07:38 #topic discuss DOCstring of benchmark scenarios + possible ways to auto generate doc samples 17:07:48 amaretskiy as you were interested in this 17:07:51 in 17:07:54 rook hi there 17:07:56 hey 17:08:17 amaretskiy so what was your idea? 17:08:28 my idea is save samples in class properties or in method properties, not in docstrings 17:08:51 advantages: 17:08:52 * no need to parse 17:08:52 * easy to check 17:08:52 * ready for using as templates 17:09:20 msdubov ^ 17:10:00 amaretskiy, I definitely need some clarifications on this 17:10:15 amaretskiy, How would you store it - as a whole string or split? 17:10:29 amaretskiy, It would be great if you'd write up a small sample class 17:10:35 amaretskiy, To illustrate your idea 17:10:38 amaretskiy why we need this? you suggest to save 'help' messages and 'examples' in properties/methods instead of doc strings? 17:10:51 amaretskiy, As of now, it's not obvious for me why this is going to be easier to parse 17:10:57 doc string it is the property too. 17:11:01 tnurlygayanov, +1 17:11:53 for example: 17:11:53 class Foo(...): 17:11:53 """ ... """ 17:11:53 SAMPLE = """{ JSON }""" 17:12:03 no need to parse 17:12:20 easy to check/validate/etc... 17:12:35 amaretskiy, Okay so we leave docstrings as is and just add these SAMPLE attributes? 17:12:57 amaretskiy, Okay, but SAMPLE is unique for the whole class 17:12:58 yes 17:13:09 amaretskiy, How would you store samples for each scenario? 17:13:24 if we need to add a sample for method, we can use 2 ways: 17:13:34 amaretskiy NO I dislike SAMPLE 17:13:55 amaretskiy we were talking about decorator 17:14:04 amaretskiy or adding to function field directly 17:14:09 amaretskiy as far as I remember 17:14:41 class FooScenario(...): 17:14:41 def barScenario(...): ... 17:14:41 barScenario_sample = """{JSON}""" # 1st way 17:14:41 barScenario.SAMPLE = """{JSON}""" # 2nd way 17:15:46 yes, decorator is ok, but it seems to have extraordinary size 17:16:00 so. 3rd way - decorator 17:16:05 not docstring 17:16:40 as for me I would prefer 2nd way 17:16:53 same property name 17:16:59 for all required objects 17:17:31 amaretskiy, I'm a bit worried about the code getting very huge... (SLOC) Although it will be of course easier for anyone to quickly understand how a particular scenario should be configured 17:17:59 amaretskiy, boris-42 Maybe we could store only sample arguments, without the "runner"/"context" section? 17:18:08 amaretskiy, To make it a bit shorter 17:18:22 and then quickly compose a valid JSON sample out of that 17:18:29 msdubov but what about cases when it makes sense? 17:18:38 not sure, everything should be explicit 17:18:38 boris-42, You're right 17:19:06 boris-42, amaretskiy I had an idea of storing the JSON samples in doc/sample/tasks, but adding a link to those files in the docstrings 17:19:12 not sure - means - include complete data 17:19:17 msdubov wtf 17:19:22 something like :sample: doc/sample/tasks 17:19:24 msdubov no idea was to generate task samples 17:19:39 boris-42, Well we still can generate them1 17:19:40 ! 17:19:43 in files 17:19:50 msdubov hm 17:20:00 boris-42, I believe that JSON samples in files are easier to navigate 17:20:06 than those in code 17:20:17 because they are stored in a neat compact way 17:20:23 msdubov there will be in files... 17:20:30 msdubov I am talking about removing them from files 17:20:36 boris-42, ok 17:20:38 msdubov i am talking about generating them from code 17:20:39 so, if we want to generate JSON, then: 1) parsing source is bad 2) templating is good - so docstrings are not good for that 17:21:11 amaretskiy so basically having one @base.sampe() is good choose 17:21:14 choice* 17:21:30 for "rally info" and generation of doc/samples/tasks/ 17:21:51 yes, decorator is good :) 17:22:54 amaretskiy, boris-42 agree 17:23:40 Okay so then I think 17:23:47 we will add @sample() 17:23:55 btw it can be reused for Context/Runner/Scenarios 17:24:02 and SLA stuff 17:24:04 we want to generate samples based on parameters of functions/methods? 17:24:09 so I think it should be in common place 17:24:15 tnurlygayanov nope we don't want 17:24:18 tnurlygayanov it's impossible 17:25:45 ok, how we will generate samples? we need to stroe some information about each benchmark/scenario and generate samples based on this info 17:26:07 tnurlygayanov ... 17:26:09 property 17:26:14 tnurlygayanov whole discussion above was about that 17:26:24 ok 17:26:25 tnurlygayanov we will have @sample 17:26:35 tnurlygayanov that adds property to class/method in different cases 17:26:48 tnurlygayanov and that can be reused by SLA/Context/Runners/Scenarios 17:27:52 boris-42 ok, now it is clear :) thank you. 17:31:34 Okay let's move 17:31:45 #topic Rally info updates and future steps 17:31:47 msdubov go on 17:32:18 Future : way to disable cleanup =) 17:32:29 kambiz is not here to talk more to that :D 17:32:35 So there are two major updates on this, both in one patch: https://review.openstack.org/#/c/126421/ 17:32:39 however, i agree boris-42 it is a "nice to have" 17:32:50 rook I mean it will be 17:32:54 rook it's already in our road map 17:33:07 rook https://github.com/stackforge/rally/blob/master/doc/feature_request/persistence_benchmark_env.rst 17:33:15 1. Typing just "rally info" or "rally info list" results in printing out a list of scenarios/engines/... that can be queried by rally info 17:33:16 rook this is our roadmap 17:33:27 2. "rally info find <...>" now has more info about scenario groups 17:33:28 rook but it will take some amount of time to implement it 17:33:48 e.g. "rally info find NovaServers" -> you have info about what benchmark scenarios are there 17:33:53 in a neat table-like output 17:34:16 Also there is a test that checks that Rally is covered with docstrings: https://review.openstack.org/127192 17:34:34 As soon as we make it pass, we can be sure that "rally info" works well too :) 17:35:47 msdubov so 17:35:59 msdubov what about SLA plugins? 17:36:33 boris-42, What do you mean? 17:37:00 msdubov I mean SLA plugins 17:37:13 msdubov can I find them using rally info 17:37:45 msdubov this https://github.com/stackforge/rally/blob/master/rally/benchmark/sla/base.py#L85-L135 17:38:16 boris-42, So say you type "rally info find max_seconds_per_iteration" 17:38:23 boris-42, What do you expect to get? 17:38:27 boris-42, Config sample? 17:38:29 msdubov infromation about it 17:38:42 msdubov I would like to type rally info find sla 17:38:48 msdubov and find all sla's 17:38:57 boris-42, Ah I see 17:39:03 then type rally info find max_seconds_per_iteration 17:39:08 and see information about it more detailed 17:39:21 and probably in future samples 17:39:27 when we finish @sample stuff 17:39:30 boris-42, that actually doesn't work for scenarios/engines as well "rally info find engines" will be an invalid input 17:39:35 boris-42, I want fix that 17:39:41 boris-42, But as for SLA 17:39:48 msdubov ya 17:39:59 msdubov as well as a end user if you type rally info NovaServers 17:40:04 msdubov output is quite misleading 17:40:17 boris-42, Why? 17:40:29 it is just a list of scenarios with one-line description 17:40:32 msdubov you are getting output of "rally info" 17:40:32 quite compact 17:40:38 msdubov read one more time what I wrtoe 17:40:47 msdubov "rally info NovaServers" 17:40:48 boris-42, Of course you are getting the output of rally info 17:40:56 msdubov that sux 17:40:59 boris-42, We discussed that multiple times 17:41:07 boris-42, I even made a patch that fixed this... 17:41:16 boris-42, But it involved some dirty code 17:41:16 msdubov you should specify 17:41:21 msdubov Mike 17:41:36 msdubov when I type "rally info NovaServers" I would like to see ouptut 17:41:51 "Probably you thought to specify rally info find NovaServers" 17:42:15 boris-42, You forgot what I told you about the command parsers... 17:42:22 boris-42, They don't support such stuff 17:42:32 msdubov you should find the way 17:42:33 boris-42, I implemented that "default" method 17:42:34 msdubov =) 17:42:48 boris-42, The only way is to remove common cliutils/argparse 17:42:50 msdubov you should make one more IF conditions in it 17:42:57 msdubov in default method 17:43:14 msdubov like if there is third argument 17:43:18 boris-42, There is no default method as of now, I removed it 17:43:19 msdubov do helper 17:43:24 boris-42, Take a look at the code 17:43:40 boris-42, it just has a patched docstring 17:43:41 msdubov I don't care actually about code 17:43:48 msdubov I am talking about result 17:43:55 msdubov result is misleading for end users 17:43:59 msdubov it is not what we want 17:44:08 boris-42, Well then I don't understand you 17:44:14 msdubov I just said 17:44:27 boris-42, You suggested removing that default method and leaving this "rally info find ..." syntax as is 17:44:34 boris-42, And now ou require the opposite 17:45:05 msdubov one more time 17:45:08 rally info 17:45:12 17:45:18 rally info find NovaServers 17:45:24 17:45:32 rally info NovaServers 17:45:47 17:46:01 ^ msdubov what is unclear? 17:47:17 msdubov okay just keep it in mind 17:47:22 msdubov and let's move 17:47:51 #topic cleanup 17:47:54 rook =) 17:48:08 Okay I am working on pretty big patch that makes our cleanup system more production ready 17:48:22 https://review.openstack.org/#/c/129060/ 17:48:30 I am going to finish it maybe today =) 17:48:58 boris-42++ 17:49:00 So now cleanuping is quite simple, plugable, safe and parallel 17:49:20 only thing that you need is to create sublass 17:49:23 https://review.openstack.org/#/c/129060/16/rally/benchmark/context/cleanup/projects_resources.py 17:49:24 for your resoruce 17:49:45 everything else will be covered by cleanup stuff 17:50:01 without end user (dev) attention which is nice=) 17:50:10 rook about turning off cleanup 17:50:21 rook actually making it as a separated command 17:50:33 or a option in the yaml/json 17:51:29 rook ya maybe) 17:51:45 rook in any case we will find some solution 17:51:51 rook after few more patches=) 17:51:55 rook and refactorings 17:52:33 #topic Docker imags 17:52:50 So we will have job that will create docker image on every merged patch 17:53:08 https://review.openstack.org/#/c/131389/ 17:53:14 which will simplify life of end users a lot 17:53:21 cause they won't need to install it=) 17:53:22 by hands 17:55:39 so 17:55:59 #topic Imprvoments in functional testing 17:56:22 Andrey Kurilin add patch that runs "rally verify" on every patch 17:56:30 And checks that at least half of tests passed 17:56:52 So at least we have some basic function testing for rally verify commands, that won't allow us to break everything 17:57:00 #topic New Rally report 17:58:00 amaretskiy is continue work on this part 17:58:21 so a lot of new improments https://review.openstack.org/#/c/128991/ that I hope we will merge soon 17:58:30 so we need to finish meeting 17:58:36 Glad to see you guys 17:58:39 #endmeeting