<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
Renat,
<div><br>
</div>
<div>Thanks for the additional information. I've been trying to put the pieces of history together and it seems I missed some of it. I think I now understand the evolution of things. Mistral does seem like it would work for what we need, so I'll definitely
be paying attention to it. </div>
<div><br>
</div>
<div>I'm curious about the general OpenStack precedent of having an incubated project depend on one that isn't yet incubated. Does that make it a hindrance for graduating to an official project since it would require operators to deploy something that isn't
yet officially part of openstack, or does that not matter?</div>
<div><br>
</div>
<div>Greg</div>
<div><br>
<div>
<div>On Jan 2, 2014, at 12:21 AM, Renat Akhmerov <<a href="mailto:rakhmerov@mirantis.com">rakhmerov@mirantis.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;">
<div>Greg, </div>
<div><br>
</div>
<div>This is really not a new discussion. Particularly, we’ve already discussed EventScheduler thing before with heat folks (<a href="http://lists.openstack.org/pipermail/openstack-dev/2013-November/019150.html">http://lists.openstack.org/pipermail/openstack-dev/2013-November/019150.html</a>).
We agreed that EventScheduler doesn’t make a lot of sense alone after Mistral came into play. It’s because EventScheduler only describes calling webhooks on schedule and nothing else. Mistral already has this functionality just because it’s a part of its core
idea. Timer events is just one of the event types Mistral is going to support (there will also be others like Ceilometer alarms). And one of the simple use case of Mistral would be exactly “calling a webhook on schedule”. Since Mistral uses DSL as a main interaction
means with a user the team decided to implement ideas of EventScheduler as a part of Mistral DSL as well. Here’s the simple Mistral DSL that describes basically the same as described in EventScheduler:</div>
<div><br>
</div>
<div>
<pre style="margin-top: 0px; margin-bottom: 0px; padding: 5px 0px; font-family: 'Bitstream Vera Sans Mono', monospace; font-size: 13px;"><span class="l-Scalar-Plain">Services</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">MyRest</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">type</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">REST_API</span>
<span class="l-Scalar-Plain">parameters</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">baseUrl</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain"><a href="http://localhost:8988/my_service">http://localhost:8988/my_service</a></span>
<span class="l-Scalar-Plain">actions</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">my-action</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">parameters</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">url</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">/my-action</span>
<span class="l-Scalar-Plain">method</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">GET</span>
<span class="l-Scalar-Plain">Workflow</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">tasks</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">my-task</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">action</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">MyRest:my-action</span>
<span class="l-Scalar-Plain">events</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">my-task</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">type</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">periodic</span>
<span class="l-Scalar-Plain">tasks</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">my-task</span>
<span class="l-Scalar-Plain">parameters</span><span class="p-Indicator">:</span>
<span class="l-Scalar-Plain">cron-pattern</span><span class="p-Indicator">:</span> <span class="s" style="color: rgb(64, 112, 160);">"*/1</span><span class="nv" style="color: rgb(187, 96, 213);"> </span><span class="s" style="color: rgb(64, 112, 160);">*</span><span class="nv" style="color: rgb(187, 96, 213);"> </span><span class="s" style="color: rgb(64, 112, 160);">*</span><span class="nv" style="color: rgb(187, 96, 213);"> </span><span class="s" style="color: rgb(64, 112, 160);">*</span><span class="nv" style="color: rgb(187, 96, 213);"> </span><span class="s" style="color: rgb(64, 112, 160);">*"</span></pre>
<div><br>
</div>
</div>
<div>I really hope it’s self-explaining enough (if not, let us know what is not clear or what you don’t like, we’ll improve it). Basically, to make this simple DSL snippet work we just need to upload it to Mistral via REST API. Just want to repeat: this already
works. To simplify this even more for use cases like yours we also have an idea of providing some API sugar like scheduling webhook calls using special REST API action like:</div>
<div><br>
</div>
<div>http POST /webhooks</div>
<div><br>
</div>
<div>{</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>“name”: “my every minute webhook”,</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>“webhook": “<a href="http://my.webhook.host/someurl%E2%80%9D">http://my.webhook.host/someurl”</a>,</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>“schedule”: {</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>“cron”: “* * * * *"</div>
<div><span class="Apple-tab-span" style="white-space:pre"></span>}</div>
<div>}</div>
<div><br>
</div>
<div>And under the hood Mistral would just generate a workflow definition similar to provided above.</div>
<div><br>
</div>
<div>So my main point here that I was trying to make is that EventScheduler is just a special case of Mistral capabilities. We can just provide a convenience for scheduling webhook calls on the API (a couple of hours to implement).</div>
<div><br>
</div>
<div>Thanks! Happy New Year to everyone! </div>
<br>
<div apple-content-edited="true">
<div>Renat Akhmerov</div>
<div>@ Mirantis Inc.</div>
<div><br>
</div>
</div>
<br>
<div><br>
</div>
</div>
_______________________________________________<br>
OpenStack-dev mailing list<br>
<a href="mailto:OpenStack-dev@lists.openstack.org">OpenStack-dev@lists.openstack.org</a><br>
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev<br>
</blockquote>
</div>
<br>
</div>
</body>
</html>