16:00:03 <rakhmerov> #startmeeting Mistral 16:00:04 <openstack> Meeting started Mon Jan 20 16:00:03 2014 UTC and is due to finish in 60 minutes. The chair is rakhmerov. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:00:05 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:00:07 <openstack> The meeting name has been set to 'mistral' 16:01:33 <rakhmerov> Let's start? 16:01:59 <gokrokve> Hi. 16:02:10 <rakhmerov> morning ) 16:02:21 <stanlagun> Hi 16:02:35 <rakhmerov> #topic Review AIs 16:03:01 <rakhmerov> so last we had several AIs 16:03:04 <rakhmerov> 1. proceed with option #3 in https://etherpad.openstack.org/p/mistral-poc 16:03:13 <rakhmerov> we're currently implementing it 16:03:41 <rakhmerov> additionally, we've added a complete DSL example at the end of this document 16:03:52 <rakhmerov> I was planning to discuss it today too 16:04:41 <rakhmerov> I think it contains some bugs now, I'll fix them today. But generally, this is the scenario that we will be targeting for 16:04:48 <rakhmerov> we need to make it work 16:05:14 <nmakhotkin> Hi 16:05:20 <rakhmerov> hey 16:05:31 <rakhmerov> the second AI: 16:05:39 <rakhmerov> 2. create new repo "mistral-extra" to move demo applications into it 16:06:12 <rakhmerov> it's almost done. We had a couple of technical issues with the new repo but it's fine now. 16:06:18 <rakhmerov> #info https://review.openstack.org/#/c/67860/ 16:07:07 <rakhmerov> and btw, this repo was approved very quickly, I guess within a week 16:07:16 <rakhmerov> which is good 16:07:37 <rakhmerov> 3. proceed with names "OnSuccess" and "OnError" for task sections to describe what to do in case of success and failure 16:07:48 <rakhmerov> that's what we're doing now 16:08:33 <rakhmerov> but there's a suggestion to use "on-success" and "on-error" to distinguish better between task names and keywords 16:09:29 <rakhmerov> if you also take a look at Complete DSL we've added "on-finish" which means "do it in any case no matter if it's a success or a failure" 16:09:53 <rakhmerov> any questions/comments on that? 16:11:40 <rakhmerov> alright 16:11:43 <rakhmerov> no questions 16:11:54 <tnurlygayanov> and it will possible to add something like 'on-exception', 'on-stop' and etc? 16:12:22 <rakhmerov> well, yes, but I guess "on-exception" is the same as "on-error" now 16:12:30 <rakhmerov> or you mean something different? 16:13:54 <nmakhotkin> Another question how to find that it is 'on-exception', not failure? 16:14:19 <rakhmerov> as a general comment, we should try to keep DSL simple, we've already gone far beyond our initial requirements ) 16:14:45 <rakhmerov> not failure? 16:14:46 <tnurlygayanov> 'on-exception' - rollback to avoid 'partial finished' tasks 16:15:03 <tnurlygayanov> ok 16:15:53 <rakhmerov> yes, I mean I'm just trying to understand if "on-error" and "on-exception" are different things in your understanding 16:16:44 <nmakhotkin> I think they are the same 16:16:49 <rakhmerov> ok 16:16:57 <nmakhotkin> Timur? 16:17:41 <rakhmerov> from my standpoint, I think it would make sense to call it "on-exception" if we had information about exception type so that we could handle different exceptions differently 16:18:12 <rakhmerov> for now we just called it "on-error" meaning no matter what happened, something went wrong 16:18:17 <nmakhotkin> Yes, I agree 16:18:27 <rakhmerov> although, it may be a philosophical thing ) 16:18:45 <tnurlygayanov> 'on-exception' for internal exception ) 16:18:53 <rakhmerov> yes 16:19:17 <rakhmerov> nmakhotkin, so could explain again your question "how to find that it is 'on-exception', not failure?" 16:19:21 <rakhmerov> not sure I got it 16:21:17 <stanlagun> exception is when you cannot reach the service. error is when service says so (like 404 error code). Not sure we need to distinguish errors and exceptions for now 16:21:26 <nmakhotkin> I mean a task state, how we can know whether we receive exception state or failure state? 16:21:50 <nmakhotkin> Hmm, ok 16:22:39 <rakhmerov> stanlagun, agree with you 16:23:25 <stanlagun> I suggest having jous one OnError and later provide additional data on what type of error it is. It may be more then those 2 types of errors for some actions 16:24:00 <rakhmerov> right 16:24:02 <rakhmerov> agree 16:24:45 <rakhmerov> so let's spend some time for discussing DSL example 16:25:03 <rakhmerov> #topic Discuss Complete DSL example (https://etherpad.openstack.org/p/mistral-poc) 16:25:24 <rakhmerov> currently it contains error, not everywhere it's a valid YAML ) 16:25:32 <rakhmerov> which is my fault, I'll fix that today 16:26:05 <rakhmerov> additionally, stanlagun suggested some changes for wait conditions 16:26:12 <rakhmerov> in red 16:26:20 <rakhmerov> I tend to agree with them 16:28:21 <rakhmerov> my initial suggestion was: 16:28:25 <rakhmerov> waitForIp: 16:28:25 <rakhmerov> action: std:wait 16:28:25 <rakhmerov> parameters: 16:28:25 <rakhmerov> delay: 3000 16:28:25 <rakhmerov> max: 5 16:28:25 <rakhmerov> on-success: checkIP 16:28:26 <rakhmerov> on-error: sendCreateVMError 16:28:39 <rakhmerov> and his: 16:28:40 <rakhmerov> waitForIp: 16:28:41 <rakhmerov> action: std:repeat 16:28:41 <rakhmerov> task: doSleep 16:29:06 <rakhmerov> I think the second option is better since it splits responsibilities better 16:30:18 <rakhmerov> if you guys have any other questions on that DSL let's talk about it 16:30:32 <rakhmerov> no better time but the present :) 16:31:28 <rakhmerov> one thing that bothers me is preparing an image with a python program starting automatically on it when an instance runs 16:31:45 <rakhmerov> tnurlygayanov, I think you're the best person to talk about it to 16:32:13 <rakhmerov> do you think it will be easy to do for our demo scenario? 16:32:31 <rakhmerov> how much time may we need for that? 16:36:01 <rakhmerov> Timur, you here? 16:37:40 <rakhmerov> ok, any other concerns on what we've come up with? 16:37:49 <tnurlygayanov> yes 16:37:55 <rakhmerov> ) 16:38:20 <tnurlygayanov> hm 16:39:10 <tnurlygayanov> ok, I think we can do this for demo 16:39:18 <rakhmerov> yes, so we'll just need to create an image (say ubuntu) with a python web application on it that must run automatically 16:39:22 <rakhmerov> perfect 16:39:52 <tnurlygayanov> we can do this with Murano or Heat ) 16:39:55 <rakhmerov> how would you estimate the efforts required for that? 16:40:08 <tnurlygayanov> with Murano it is 5 minutes ) 16:40:12 <rakhmerov> excluding the app itself 16:40:14 <rakhmerov> :)))) 16:40:44 <tnurlygayanov> so, you want just Ubuntu with Web Server as a result? 16:40:46 <rakhmerov> ok, it's even better that I thought 16:40:52 <rakhmerov> yes 16:41:10 <rakhmerov> I thought it would be the whole 10 minutes ) 16:41:12 <tnurlygayanov> ok, we have the Apache Linux Server in Murano and it is already ready to deploy. 16:41:21 <rakhmerov> kidding 16:41:35 <rakhmerov> ok, that's good, so looks like it's not really a problem 16:41:50 <rakhmerov> ok, guys, any other questions/concerns? 16:42:32 <rakhmerov> please take a look again at this complete example when you have time. We need to make it shine and use as a target scenario for PoC 16:43:00 <rakhmerov> #topic Current PoC status 16:43:08 <rakhmerov> So, I'll be quick on that one 16:43:42 <rakhmerov> we're currently working on the new requirements, finished serious refactoring in our engines (local and scalable) 16:44:18 <rakhmerov> so in my understanding we'll be able to finish it not earlier than in 1.5-2 weeks 16:45:13 <rakhmerov> besides, we now have repos for python-mistralclient and mistral-extra where we will keep our demos and additional tools 16:45:39 <rakhmerov> #top Open discussion 16:45:47 <rakhmerov> #topic Open discussion 16:46:17 <rakhmerov> btw, I'd like to capture 2 action items 16:46:56 <tnurlygayanov> I suggest to discuss demo scenario ) 16:47:26 <rakhmerov> #action, nmakhotkin, write a simple demo web application that should be deployed on an instance that Mistral will run 16:47:28 <rakhmerov> sure 16:47:31 <rakhmerov> sec 16:48:07 <rakhmerov> #action tnurlygayanov, prepare an image with simple demo web app preinstalled on it 16:48:12 <rakhmerov> ok, go ahead 16:48:21 <rakhmerov> what would you like to discuss? 16:49:04 <tnurlygayanov> what will mistral do with Web Server? Do we plan to deploy or perform backup? 16:49:15 <rakhmerov> ok 16:49:31 <rakhmerov> I was thinking about something like backup first 16:50:03 <rakhmerov> but honestly, I just didn't come up with something interesting that would demonstrate our new DSL capabilities 16:50:18 <rakhmerov> even though we could do something with backups 16:50:20 <rakhmerov> so 16:50:32 <rakhmerov> instead, I'm now suggesting the following scenario 16:50:47 <rakhmerov> 1. create a VM 16:50:57 <rakhmerov> 2. wait till it's really created 16:51:11 <rakhmerov> 3. run a job on the VM 16:51:44 <rakhmerov> which will be just sending HTTP request to a python program installed on the VM (what I called web application earlier) 16:52:03 <rakhmerov> 4. merge results into execution context 16:52:21 <rakhmerov> 5. destroy the VM 16:52:53 <rakhmerov> and that should happen periodically 16:53:13 <rakhmerov> so this scenario will demonstrate all we want 16:53:22 <tnurlygayanov> is it requred to have the python-based web server? 16:53:44 <rakhmerov> well, in general no 16:54:10 <rakhmerov> we just need to have a REST endpoint on the VM that does something 16:54:17 <rakhmerov> from Mistral perspective 16:54:37 <rakhmerov> it could be implemented either with python or in a different way somehow 16:54:43 <tnurlygayanov> do we plan use Nova API for manage VMs? 16:54:51 <rakhmerov> yes, we do 16:55:05 <rakhmerov> there will be two request to Nova 16:55:13 <rakhmerov> createVM and destroyVM 16:55:21 <rakhmerov> ooh, even three 16:55:25 <tnurlygayanov> and one more question: how we will detect that VM is ready for step3 ? 16:55:39 <rakhmerov> also getVMdetails (in order to check IP address) 16:55:45 <tnurlygayanov> yes ) 16:55:49 <rakhmerov> just answered :) 16:56:02 <rakhmerov> any concerns on that? 16:56:34 <rakhmerov> in my understanding that should work, but maybe I'm misssing something 16:56:55 <tnurlygayanov> just answered :) - we will just send requests for Web server and wait valid response? ) 16:57:27 <rakhmerov> ok, there two parts 16:57:37 <rakhmerov> first, we need to wait till VM is up 16:57:53 <rakhmerov> for that we'll be sending requests to Nova periodically 16:58:05 <rakhmerov> with some delay up to say 5 times 16:58:31 <rakhmerov> and the second part is we'll send a request to do some useful job on that VM 16:58:34 <tnurlygayanov> so, probably some timeout will be more usefull that 'times count' 16:58:41 <rakhmerov> and that's why we need this web app 16:58:48 <rakhmerov> yes 16:58:59 <rakhmerov> ok, guys, I think we need to wrap up 16:59:00 <rakhmerov> :) 16:59:18 <rakhmerov> let's continue offline or next time 16:59:27 <rakhmerov> bye 16:59:34 <rakhmerov> #endmeeting Mistral