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