<div class="gmail_extra">Brian,</div><div class="gmail_extra"><br></div><div class="gmail_extra">Dough isn't dependent on Horizon.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Dough has a client that can be inserted anywhere to notify the start/end of using a resource.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">We inserted the client in horizon just to try out the many ways our billing system could be integrated with our existing deployment.</div><div class="gmail_extra">
<br></div><div class="gmail_extra">We are planning to make a Nova notifier to listen on the AMQP to automate the subscription process.</div><div class="gmail_extra"><br></div><div class="gmail_extra">However, we still have to devise a way to integrate Swift that would be symmetric with the things done in Nova.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Also fail recovery is a feature we are working on right now. Separate the log and execution to cross-reference the logs and DB periodically.</div><div class="gmail_extra">
<br></div><div class="gmail_extra">We plan to finish the first release this month and use it on our deployment.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Let me know if you have other suggestions.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">Cheers,</div><div class="gmail_extra">LZY</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 24, 2012 at 1:06 AM, Doug Hellmann <span dir="ltr"><<a href="mailto:doug.hellmann@dreamhost.com" target="_blank">doug.hellmann@dreamhost.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra"><br><br><div class="gmail_quote"><div class="im">On Sun, Apr 22, 2012 at 5:29 PM, Brian Schott <span dir="ltr"><<a href="mailto:brian.schott@nimbisservices.com" target="_blank">brian.schott@nimbisservices.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Dough is a proposed billing service.  There was a session at Folsom design summit.  This is a practical project for an OpenStack provider with test code on github.  <div>

<a href="http://summit.openstack.org/sessions/view/37" target="_blank">http://summit.openstack.org/sessions/view/37</a></div><div><div><br></div><div>"</div><div><div>The billing system consists of three components.</div>

<div>1) API Server, which receives subscribe/unsubscribe and usage query requests.</div><div>2) Farmer, which periodically checks all subscriptions and requests billing to the collector.</div><div>3) Collector, gets work from the farmer and uses python-novaclient, kanyun-client, swift-client to retrieve usage information of a product the tenant has subscribed and charges money to the accordingly.</div>

"</div><div><div>Kanyun is an OpenStack monitoring tool, but I don't see documentation in the code tree (but I've just pulled it to see).</div><div><a href="https://github.com/lzyeval" target="_blank">https://github.com/lzyeval</a></div>

</div><div><br></div><div>Dough had mixed reviews during the session, but that I think was because it came across as a billing system triggered solely by Horizon requests and was a polled architecture.  </div></div></div>

</blockquote><div><br></div></div><div>I also had some reservations about Dough because it seemed brittle. For example, it was my impression that if an instance creation operation failed for some reason, the operator had to manually correct the billing data.</div>
<div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div><div>Given what we have today, I'd implement my own billing/metering system exactly the same way.  In fact, I have.  Our own e-commerce system at Nimbis works this way with EC2 and OpenStack presently because the only option available is polling periodically and logging the usage data.</div>

</div></div></blockquote><div><br></div></div><div>The fact that it only worked through Horizon was the biggest issue for us. That means if we expose the API to our users, instances created via the API but not the Horizon dashboard would not be billed. I understood the decision to be a proof-of-concept, but an event-based model for collecting the data seems much more robust and flexible.</div>
<div><div class="h5">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Where I'd like to see OpenStack go is metering service that is fully asynchronous and event driven so that I only need to hit the API service when I'm generating an invoice, rather than once per minute because I don't know when an instance was terminated by the user or just crashed.  </div>

<div><div><div><br><div>
<div><div style="font-size:12px">-------------------------------------------------</div><div style="font-size:12px">Brian Schott, CTO</div><div style="font-size:12px">Nimbis Services, Inc.</div><div style="font-size:12px">

<a href="mailto:brian.schott@nimbisservices.com" target="_blank">brian.schott@nimbisservices.com</a></div><div style="font-size:12px">ph: <a href="tel:443-274-6064" value="+14432746064" target="_blank">443-274-6064</a>  fx: <a href="tel:443-274-6060" value="+14432746060" target="_blank">443-274-6060</a></div>

</div><div><br></div><br>
</div>
<br></div><div><div><div><div>On Apr 22, 2012, at 4:57 PM, Endre Karlson wrote:</div><br><blockquote type="cite"><div class="gmail_extra">What is Dough then compared to what you want to do ?<br><br><div class="gmail_quote">

2012/4/22 Endre Karlson <span dir="ltr"><<a href="mailto:endre.karlson@gmail.com" target="_blank">endre.karlson@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_extra">What is Dough then ?<div><div><br><br><div class="gmail_quote">2012/4/22 Brian Schott <span dir="ltr"><<a href="mailto:brian.schott@nimbisservices.com" target="_blank">brian.schott@nimbisservices.com</a>></span><br>



<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>I see this blueprint for metering, but none for Dough currently.</div><a href="http://wiki.openstack.org/EfficientMetering" target="_blank">http://wiki.openstack.org/EfficientMetering</a><div>



<br></div><div>Here are the Dough slides, however:</div><div><a href="http://www.slideshare.net/lzyeval/dough-openstack-billing-project" target="_blank">http://www.slideshare.net/lzyeval/dough-openstack-billing-project</a></div>



<div><br></div><div>We collectively need to talk more about the user scenarios, because I don't think you can just put a decorator around the API rpc calls and get an accurate picture of what to bill for later.  There are metered things like bandwidth or IOPS, events that happen outside of the API (shutdown -h), and it is hard to predict what a reseller will want to charge for.  It is better to put a metering system in that can handle many billing configurations.</div>



<div><br></div><div><div><br><div>
<div><div style="font-size:12px">-------------------------------------------------</div><div style="font-size:12px">Brian Schott, CTO</div><div style="font-size:12px">Nimbis Services, Inc.</div><div style="font-size:12px">



<a href="mailto:brian.schott@nimbisservices.com" target="_blank">brian.schott@nimbisservices.com</a></div><div style="font-size:12px">ph: <a href="tel:443-274-6064" value="+14432746064" target="_blank">443-274-6064</a>  fx: <a href="tel:443-274-6060" value="+14432746060" target="_blank">443-274-6060</a></div>



</div><div><br></div><br>
</div>
<br></div><div><div><div><div>On Apr 22, 2012, at 3:36 PM, Luis Gervaso wrote:</div><br><blockquote type="cite"><div class="gmail_extra">Dough is the proposed billing platform/product (where the billing rules live), isn't it?</div>



<div class="gmail_extra"><br></div><div class="gmail_extra">I don't know Dough enough, so please me correct me if i'm wrong.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">I'm trying to define a generic/agnostic integration process, obviously where Dough </div><div class="gmail_extra">can fit perfectly. I would like it become part to the reference architecture.</div>




<div class="gmail_extra"><br></div><div class="gmail_extra">Option 1) [3b in the arch proposed]</div><div class="gmail_extra"><br></div><div class="gmail_extra">Dough should pull NoSQL</div><div class="gmail_extra"><br></div>




<div class="gmail_extra">Option 2)</div><div class="gmail_extra"><br></div><div class="gmail_extra">A Mediator can feed Dough</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Apr 22, 2012 at 9:13 PM, Endre Karlson <span dir="ltr"><<a href="mailto:endre.karlson@gmail.com" target="_blank">endre.karlson@gmail.com</a>></span> wrote:<br>




<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>What about using the Dough project?<div><br></div></div><div><span><font color="#888888">Endre.</font></span><div>




<div><br><br><div class="gmail_quote">2012/4/22 Endre Karlson <span dir="ltr"><<a href="mailto:endre.karlson@gmail.com" target="_blank">endre.karlson@gmail.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





What about using the Dough project ?<div><br></div><div>Endre.<br><br><div class="gmail_quote">2012/4/22 Luis Gervaso <span dir="ltr"><<a href="mailto:luis@woorea.es" target="_blank">luis@woorea.es</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div><div>
Hi,<div><br></div><div>I want to share the architecture i am developing in order to perform the monitorig / billing OpenStack support:</div><div><br></div><div>1. AMQP Client which listen to RabbitMQ / QPid (this should be interchangeable) (Own Stuff or ServiceMix / Camel)</div>







<div><br></div><div>2. Events should be stored on a NoSQL document oriented database (I think mongodb is perfect, since we can query in a super easy fashion)</div><div><br></div><div>3a. The monitoring system can pull/push MongoDB</div>







<div><br></div><div>3b. The billing system can pull to create invoices </div><div><br></div><div>4. A mediation EIP should be necessary to integrate a billing/monitoring product. (ServiceMix / Camel)</div><div><br></div>






<div>
This is to receive your feedback. So please, critics are welcome!</div><div><br></div><div>Cheers!<span><font color="#888888"><br clear="all"><div><br></div>-- <br>-------------------------------------------<br>
Luis Alberto Gervaso Martin<div>Woorea Solutions, S.L<br>
CEO & CTO<br>mobile: <a href="tel:%28%2B34%29%20627983344" value="+34627983344" target="_blank">(+34) 627983344</a><br><a href="mailto:luis.gervaso@gmail.com" target="_blank">luis@</a><a href="http://woorea.es/" target="_blank">woorea.es</a></div>






<br>
</font></span></div><br>
<br></div></div>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div><br></div>
</blockquote></div><br></div></div></div>
<br>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>-------------------------------------------<br>Luis Alberto Gervaso Martin<div>Woorea Solutions, S.L<br>CEO & CTO<br>mobile: <a href="tel:%28%2B34%29%20627983344" value="+34627983344" target="_blank">(+34) 627983344</a><br>



<a href="mailto:luis.gervaso@gmail.com" target="_blank">luis@</a><a href="http://woorea.es/" target="_blank">woorea.es</a></div>
<br>
</div>
_______________________________________________<br>Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>Post to     : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>



Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>



</blockquote></div><br></div></div></div></div></blockquote></div><br></div></div></div>
</blockquote></div><br></div>
_______________________________________________<br>Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>Post to     : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>

Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>

</blockquote></div><br></div></div></div></div></div><br>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div></div></div><br></div>
<br>_______________________________________________<br>
Mailing list: <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
Post to     : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a><br>
Unsubscribe : <a href="https://launchpad.net/~openstack" target="_blank">https://launchpad.net/~openstack</a><br>
More help   : <a href="https://help.launchpad.net/ListHelp" target="_blank">https://help.launchpad.net/ListHelp</a><br>
<br></blockquote></div><br></div>