<div class="gmail_extra">I'm not sure it makes sense for a "service" to have more than one "endpoint." Two different endpoints might as well be two separate services IMO, even if they directly affect each other.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">For example, creating a tenant on the identity admin endpoint makes that tenant just as available on the identity public endpoint as it does on the compute public endpoint, but of course it doesn't make sense to say all of nova is suddenly part of keystone.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">There are (at least) two attributes that must be provided to distinguish between two endpoints: the API "type" and the endpoint/url "type." ("admin + identity" vs "public + compute" vs "internal + volumes"). Trying to group endpoints at a high level by API type alone strikes me as very arbitrary, at best.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">If I'm going to "collect" anything, it would be which endpoints work (or work *best*) with which *other* endpoints. See: <a href="https://blueprints.launchpad.net/keystone/+spec/service-relationships">https://blueprints.launchpad.net/keystone/+spec/service-relationships</a></div>
<div class="gmail_extra"><br></div><div class="gmail_extra">-Dolph</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote">On Wed, Apr 25, 2012 at 11:47 AM, Joseph Heck <span dir="ltr"><<a href="mailto:heckj@me.com" target="_blank">heckj@me.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"><div>This isn't about parsing the data structure - it's about what a "service" represents so that we can model it appropriately. So what does the "service" here represent? the collection of all possible services of that type? That's what your example would seem to indicate.</div>
<div><br></div><div>In your example, the service is a pretty simple structure - just having a type (driven by convention and API spec) and human readable name, and each service is expected to have 1 to N endpoints.</div><div>
<br></div><div>Is it reasonable to have a service without any endpoints? Regardless of reasonable, is it allowable?</div><div><br></div><div>What does an endpoint represent? The API's URI point, clearly. Is there a uniqueness constraint of any kind on endpoints? Is it allowable (if strange) to list 3 duplicate endpoints with exactly the same metadata on it?</div>
<div><br></div><div>-joe</div><div><div class="h5"><div><br></div><div><div><div>On Apr 25, 2012, at 9:37 AM, Nguyen, Liem Manh wrote:</div><blockquote type="cite"><span style="border-collapse:separate;font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;font-size:medium"><div lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">I would like to keep the service type  and name under the service and not the endpoint, too.  Make it easier to parse for a given service.<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">One thing is that I am not sure if we need the metadata tag… In the Keystone XSD, we have the construct <anyAttribute namespace="##other" processContents="lax"/>, which allows any additional, implementation-specific attribute to be added.  Those that do not support the specific attribute can simply ignore it.   A couple of benefits I can see with not using the metadata tag, and just use the custom element directly like this: <span> </span><a href="http://paste.openstack.org/show/13832/" style="color:blue;text-decoration:underline" target="_blank">http://paste.openstack.org/show/13832/</a>, which the anyAttribute supports, are:<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0.5in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font:normal normal normal 7pt/normal 'Times New Roman'">        <span> </span></span></span></span><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Simplier parsing, one level less.<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0.5in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Symbol;color:rgb(31,73,125)"><span>·<span style="font:normal normal normal 7pt/normal 'Times New Roman'">        <span> </span></span></span></span><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">If that attribute becomes a core attribute later, no need to change the parser.<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Liem<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div><div style="border-right-style:none;border-bottom-style:none;border-left-style:none;border-width:initial;border-color:initial;border-top-style:solid;border-top-color:rgb(181,196,223);border-top-width:1pt;padding-top:3pt;padding-right:0in;padding-bottom:0in;padding-left:0in">
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><b><span style="font-size:10pt;font-family:Tahoma,sans-serif">From:</span></b><span style="font-size:10pt;font-family:Tahoma,sans-serif"><span> </span><a href="mailto:openstack-bounces+liem_m_nguyen=hp.com@lists.launchpad.net" target="_blank">openstack-bounces+liem_m_nguyen=hp.com@lists.launchpad.net</a> [mailto:<a href="mailto:openstack-bounces%2Bliem_m_nguyen" target="_blank">openstack-bounces+liem_m_nguyen</a>=<a href="mailto:hp.com@lists.launchpad.net" target="_blank">hp.com@lists.launchpad.net</a>]<span> </span><b>On Behalf Of<span> </span></b>Joe Savak<br>
<b>Sent:</b><span> </span>Tuesday, April 24, 2012 1:04 PM<br><b>To:</b><span> </span>Joseph Heck; <a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a> (<a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a>)<br>
<b>Cc:</b><span> </span>Adam Gandelman<br><b>Subject:</b><span> </span>Re: [Openstack] [Keystone] What exactly are we modeling with endpoints?<u></u><u></u></span></div></div></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Having endpoints under the service construct is supposed to make it easier to programmatically find the endpoint(s) you are interested in.<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">For example – as nova client I can parse the service catalog and identity nova by service-type “compute” in order to get the public, internal, and admin endpoints for nova.<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">By having service type & name as attributes under the endpoint, I’ll have a harder time doing that (having to dive into each endpoint construct to identify the ones with service-type “compute”).<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Maybe it would be better to have each endpoint have its own construct inside of a service.<u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">So instead of<span> </span><a href="http://paste.openstack.org/show/13678/" style="color:blue;text-decoration:underline" target="_blank">http://paste.openstack.org/show/13678/</a><u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)">Maybe<span> </span><a href="http://paste.openstack.org/show/13682/" style="color:blue;text-decoration:underline" target="_blank">http://paste.openstack.org/show/13682/</a><u></u><u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:11pt;font-family:Calibri,sans-serif;color:rgb(31,73,125)"><u></u> <u></u></span></div>
<div><div style="border-right-style:none;border-bottom-style:none;border-left-style:none;border-width:initial;border-color:initial;border-top-style:solid;border-top-color:rgb(181,196,223);border-top-width:1pt;padding-top:3pt;padding-right:0in;padding-bottom:0in;padding-left:0in">
<div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><b><span style="font-size:10pt;font-family:Tahoma,sans-serif">From:</span></b><span style="font-size:10pt;font-family:Tahoma,sans-serif"><span> </span><a href="mailto:openstack-bounces+joe.savak=rackspace.com@lists.launchpad.net" target="_blank">openstack-bounces+joe.savak=rackspace.com@lists.launchpad.net</a> [mailto:<a href="mailto:openstack-bounces%2Bjoe.savak" target="_blank">openstack-bounces+joe.savak</a>=<a href="mailto:rackspace.com@lists.launchpad.net" target="_blank">rackspace.com@lists.launchpad.net</a>]<span> </span><b>On Behalf Of<span> </span></b>Joseph Heck<br>
<b>Sent:</b><span> </span>Friday, April 20, 2012 4:16 PM<br><b>To:</b><span> </span><a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a> (<a href="mailto:openstack@lists.launchpad.net" target="_blank">openstack@lists.launchpad.net</a>)<br>
<b>Cc:</b><span> </span>Adam Gandelman<br><b>Subject:</b><span> </span>[Openstack] [Keystone] What exactly are we modeling with endpoints?<u></u><u></u></span></div></div></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">While I've been roaming about the summit and conference, I've been trying to figure out exactly what we're modeling with the current "service" and "endpoints" that are in the API today. After talking with a number of folks, it's getting clearer that how it's being used is very installation specific.<u></u><u></u></div>
<div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
I'd like to simplify this aspect of the API if at all possible, especially with a lot of the good ideas around describing the relationships between endpoints and and their installation.<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">The use cases I'm hearing actively in use are:<u></u><u></u></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
* (Horizon/UI/client) To indicate to a user where they can go to access their data<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
* (Glance, Nova, Keystone client) to find the endpoint relevant to uploading images (current client implementations appear to assume there is only one image endpoint)<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">The use case to indicate a geographic location for a datacenter or "cloud" is not consistent - some implementations I've learned of have that feature (and use "Region" for that sort of information), and others are load balancing a single endpoint to deploy to multiple datacenters and geographic regions from a single endpoint.<u></u><u></u></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
At the summit and conference, I heard a desire to expose geographic information with the endpoints, but that is clearly an operator specific implementation/deployment detail. Likewise I heard a lot of "We could really..." if additional metadata was easily available on endpoints, again in fairly implementation/deployment specific detail.<u></u><u></u></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
So looking forward towards a v.next API, what do you all think about having just "endpoints", with everything else being attributes on those endpoints (including what "service" and "type" it is), with some expected conventions (that there are a few well defined types - such as PublicURL and InternalURL, and relevant names for the rest API endpoints (ec2, compute, volume, image, identity...) <u></u><u></u></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
Additional metadata can then float on the endpoints in deployment/implementation specific ways that don't lock in other systems to be deployed and implemented in the same fashion.<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">-joe<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div><div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
On Apr 20, 2012, at 1:47 PM, Lorin Hochstein wrote:<u></u><u></u></div></div><blockquote style="margin-top:5pt;margin-bottom:5pt"><div><div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
On Apr 13, 2012, at 12:34 PM, Adam Gandelman wrote:<u></u><u></u></div></div><blockquote style="margin-top:5pt;margin-bottom:5pt"><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
On 04/13/2012 10:50 AM, Dolph Mathews wrote:<u></u><u></u></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">While $(tenant_id)s is certainly the documented syntax, it appears that the SQL catalog backend (and *only* the SQL catalog backend, as far as I can tell) explicitly supports both $(tenant_id)s and %(tenant_id)s:<u></u><u></u></div>
<div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<a href="https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/sql.py#L163" style="color:blue;text-decoration:underline" target="_blank">https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/sql.py#L163</a><u></u><u></u></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
Perhaps Adam Gandelman has some insight?<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">-Dolph<u></u><u></u></div></div><p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:12pt;font-size:12pt;font-family:'Times New Roman',serif">
<br>Dolph-<br><br>No, the same is supported in the case of templated catalog as well, which is what the SQL catalog was largely based off:<br><br><a href="https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/templated.py#L115" style="color:blue;text-decoration:underline" target="_blank">https://github.com/openstack/keystone/blob/master/keystone/catalog/backends/templated.py#L115</a><br>
<br>Just tested that "sed -i 's/\$/%/g' /etc/keystone/default_catalog.templates" still produces a functional service catalog when configured to use the templated backend.<br><br>Seeing as both are supported, perhaps it would be better for docs to be updated to refer to the use of % instead of $ to avoid people running into problems with the $() sub-shell?<u></u><u></u></p>
</div></blockquote><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
The OpenStack Install and Deploy manual has some language about this (see last paragraph): <a href="http://docs.openstack.org/trunk/openstack-compute/install/content/elements-of-keystone-service-catalog-entry.html" style="color:blue;text-decoration:underline" target="_blank">http://docs.openstack.org/trunk/openstack-compute/install/content/elements-of-keystone-service-catalog-entry.html</a><u></u><u></u></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
This hasn't made its way into the admin docs yet, though.<u></u><u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></div></div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><div><div><div><div>
<div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif">Take care,<u></u><u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif"><u></u> <u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif">Lorin<u></u><u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif">--<u></u><u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif">Lorin Hochstein<u></u><u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif">Lead Architect - Cloud Services<u></u><u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif">Nimbis Services, Inc.<u></u><u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif"><a href="https://www.nimbisservices.com/" style="color:blue;text-decoration:underline" target="_blank">www.nimbisservices.com</a><u></u><u></u></span></div>
</div><div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><span style="font-size:13.5pt;font-family:Helvetica,sans-serif"><u></u> <u></u></span></div>
</div></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"><u></u> <u></u></div></div><p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:12pt;font-size:12pt;font-family:'Times New Roman',serif">
<u></u> <u></u></p></div></div></div><div style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif">_______________________________________________<br>
Mailing list:<span> </span><a href="https://launchpad.net/~openstack" style="color:blue;text-decoration:underline" target="_blank">https://launchpad.net/~openstack</a><br>Post to     :<span> </span><a href="mailto:openstack@lists.launchpad.net" style="color:blue;text-decoration:underline" target="_blank">openstack@lists.launchpad.net</a><br>
Unsubscribe :<span> </span><a href="https://launchpad.net/~openstack" style="color:blue;text-decoration:underline" target="_blank">https://launchpad.net/~openstack</a><br>More help   :<span> </span><a href="https://help.launchpad.net/ListHelp" style="color:blue;text-decoration:underline" target="_blank">https://help.launchpad.net/ListHelp</a><u></u><u></u></div>
</blockquote></div><p class="MsoNormal" style="margin-top:0in;margin-right:0in;margin-left:0in;margin-bottom:0.0001pt;font-size:12pt;font-family:'Times New Roman',serif"></p></div></div></div></span></blockquote></div>
<br></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">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>