<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p
        {mso-style-priority:99;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
p.msochpdefault, li.msochpdefault, div.msochpdefault
        {mso-style-name:msochpdefault;
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Times New Roman","serif";}
span.emailstyle18
        {mso-style-name:emailstyle18;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle23
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:456024338;
        mso-list-type:hybrid;
        mso-list-template-ids:-2098145420 269025295 269025305 269025307 269025295 269025305 269025307 269025295 269025305 269025307;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1
        {mso-list-id:465009673;
        mso-list-type:hybrid;
        mso-list-template-ids:1055053148 269025295 269025305 269025307 269025295 269025305 269025307 269025295 269025305 269025307;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor="white" lang="EN-CA" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">In short, the container IDs assigned by Magnum are independent of the container IDs assigned by Docker daemon. Magnum do the IDs mapping before doing a native
 API call. In particular, here is how it works.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">If users create a container through Magnum endpoint, Magnum will do the followings:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Generate a uuid (if not provided).<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Call Docker Swarm API to create a container, with its hostname equal to the generated uuid.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Persist container to DB with the generated uuid.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">If users perform an operation on an existing container, they must provide the uuid (or the name) of the container (if name is provided, it will be used to lookup
 the uuid). Magnum will do the followings:<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l1 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Call Docker Swarm API to list all containers.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l1 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Find the container whose hostname is equal to the provided uuid, record its “docker_id” that is the ID assigned by native tool.<o:p></o:p></span></p>
<p class="MsoListParagraph" style="text-indent:-18.0pt;mso-list:l1 level1 lfo2"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman"">      
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Call Docker Swarm API with “docker_id” to perform the operation.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Magnum doesn’t assume all operations to be routed through Magnum endpoints. Alternatively, users can directly call the native APIs. In this case, the created
 resources are not managed by Magnum and won’t be accessible through Magnum’s endpoints.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hope it is clear.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Best regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hongbin<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> Kyle Kelley [mailto:kyle.kelley@RACKSPACE.COM]
<br>
<b>Sent:</b> January-14-16 11:39 AM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [magnum] Nesting /containers resource under /bays<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">This presumes a model where Magnum is in complete control of the IDs of individual containers. How does this work with the Docker daemon?<o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">> </span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;background:white">In Rest API, you can set the “uuid” field in the json request body (this is not supported
 in CLI, but it is an easy add).</span><span style="font-family:"Calibri","sans-serif";color:black">​<o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">In the Rest API for Magnum or Docker? Has Magnum completely broken away from exposing native tooling - are all container operations assumed to be routed through Magnum endpoints?<o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">> </span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;background:white">For the idea of nesting container resource, I prefer not to do that if there are alternatives
 or it can be work around.</span><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;background:white">IMO, it sets a limitation that a container must have a bay,
 which might not be the case in future. For example, we might add a feature that creating a container will automatically create a bay. If a container must have a bay on creation, such feature is impossible.</span><span style="font-family:"Calibri","sans-serif";color:black"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">If that's *really* a feature you need and are fully involved in designing for, this seems like a case where creating a container via these endpoints would create a bay and return the full resource+subresource.<o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">Personally, I think these COE endpoints need to not be in the main spec, to reduce the surface area until these are put into further use.<o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"><o:p> </o:p></span></p>
<div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="font-family:"Calibri","sans-serif";color:#212121">
<hr size="2" width="98%" align="center">
</span></div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:black"> Hongbin Lu <<a href="mailto:hongbin.lu@huawei.com">hongbin.lu@huawei.com</a>><br>
<b>Sent:</b> Wednesday, January 13, 2016 5:00 PM<br>
<b>To:</b> OpenStack Development Mailing List (not for usage questions)<br>
<b>Subject:</b> Re: [openstack-dev] [magnum] Nesting /containers resource under /bays</span><span style="font-family:"Calibri","sans-serif";color:#212121">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif";color:#212121"> <o:p></o:p></span></p>
</div>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hi Jamie,</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> </span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I would like to clarify several things.</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> </span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">First, a container uuid is intended to be unique globally (not within individual cluster). If you create a container with duplicated uuid, the creation will
 fail regardless of its bay. Second, you are in control of the uuid of the container that you are going to create. In Rest API, you can set the “uuid” field in the json request body (this is not supported in CLI, but it is an easy add). If a uuid is provided,
 Magnum will use it as the uuid of the container (instead of generating a new uuid).</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> </span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">For the idea of nesting container resource, I prefer not to do that if there are alternatives or it can be work around. IMO, it sets a limitation that a container
 must have a bay, which might not be the case in future. For example, we might add a feature that creating a container will automatically create a bay. If a container must have a bay on creation, such feature is impossible.</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> </span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Best regards,</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hongbin</span><span style="color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"> </span><span style="color:#212121"><o:p></o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:#212121">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:#212121"> Jamie Hannaford [<a href="mailto:jamie.hannaford@rackspace.com">mailto:jamie.hannaford@rackspace.com</a>]
<br>
<b>Sent:</b> January-13-16 4:43 AM<br>
<b>To:</b> <a href="mailto:openstack-dev@lists.openstack.org">openstack-dev@lists.openstack.org</a><br>
<b>Subject:</b> [openstack-dev] [magnum] Nesting /containers resource under /bays</span><span style="color:#212121"><o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><span style="color:#212121"> <o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">I've recently been gathering feedback about the Magnum API and one of the things that people commented on​ was the global /containers endpoints. One person highlighted the danger of UUID collisions:</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">"""</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">It takes a container ID which is intended to be unique within that individual cluster. Perhaps this doesn't matter, considering the surface for hash collisions. You're running a 1% risk of collision
 on the shorthand container IDs:</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p style="margin-bottom:12.0pt"><span style="font-family:"Calibri","sans-serif";color:black">In [14]: n = lambda p,H: math.sqrt(2*H * math.log(1/(1-p)))</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif";color:black">In [15]: n(.01, 0x1000000000000)</span><span style="color:#212121"><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif";color:black">Out[15]: 2378620.6298183016</span><span style="color:#212121"><o:p></o:p></span></p>
</div>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">(this comes from the Birthday Attack - <a href="https://en.wikipedia.org/wiki/Birthday_attack" target="_blank">https://en.wikipedia.org/wiki/Birthday_attack)</a></span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">The main reason I questioned this is that we're not in control of how the hashes are created whereas each Docker node or Swarm cluster will pick a new ID under collisions. We don't have that guarantee
 when aggregating across.</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">The use case that was outlined appears to be aggregation and reporting. That can be done in a different manner than programmatic access to single containers.​</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">"""</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">Representing a resource without reference to its parent resource also goes against the convention of many other OpenStack APIs.</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">Nesting a container resource under its parent bay would mitigate both of these issues:</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">/bays/{uuid}/containers/{uuid}​</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">I'd like to get feedback from folks in the Magnum team and see if anybody has differing opinions about this.</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black">Jamie</span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p><span style="font-family:"Calibri","sans-serif";color:black"> </span><span style="font-family:"Calibri","sans-serif";color:#212121"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif";color:black">   
</span><span style="color:#212121"><o:p></o:p></span></p>
<div class="MsoNormal" align="center" style="text-align:center"><span style="font-family:"Calibri","sans-serif";color:black">
<hr size="2" width="100%" align="center">
</span></div>
<p class="MsoNormal"><span style="font-family:"Calibri","sans-serif";color:black">Rackspace International GmbH a company registered in the Canton of Zurich, Switzerland (company identification number CH-020.4.047.077-1) whose registered office is at Pfingstweidstrasse
 60, 8005 Zurich, Switzerland. Rackspace International GmbH privacy policy can be viewed at
<a href="http://www.rackspace.co.uk/legal/swiss-privacy-policy">www.rackspace.co.uk/legal/swiss-privacy-policy</a> - This e-mail message may contain confidential or privileged information intended for the recipient. Any dissemination, distribution or copying
 of the enclosed material is prohibited. If you receive this transmission in error, please notify us immediately by e-mail at
<a href="mailto:abuse@rackspace.com">abuse@rackspace.com</a> and delete the original message. Your cooperation is appreciated.
</span><span style="color:#212121"><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</body>
</html>