<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=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        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;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:black;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></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 lang=EN-US link=blue vlink=purple style='word-wrap: break-word;-webkit-nbsp-mode: space;-webkit-line-break: after-white-space'><div class=WordSection1><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>I think Glen is on the right track here. Having the account_ID be a string with no connotation for Nova allows two benefits: 1) deployments can create the arbitrary organizational models that fit their particular DC, physical, and logical structures, and 2) the Nova code is simpler as the hierarchical concepts do not have any manifestations in the code.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>Additional benefit includes an easier mapping to the particular identity and authorization system that a deployment chooses to use.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'>John<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> openstack-bounces+john=openstack.org@lists.launchpad.net [mailto:openstack-bounces+john=openstack.org@lists.launchpad.net] <b>On Behalf Of </b>Glen Campbell<br><b>Sent:</b> Thursday, February 03, 2011 2:42 PM<br><b>To:</b> Devin Carlen; Monsyne Dragon<br><b>Cc:</b> openstack@lists.launchpad.net<br><b>Subject:</b> Re: [Openstack] Pondering multi-tenant needs in nova.<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'>I think that this could be done in the current proposal. Specifically, the account_id is an arbitrary string that is generated externally to Nova. You could, for example, easily identify an organizational hierarchy. For example, an accountID could be:<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'>enterprise-org-project-milestone<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'>From Nova's point of view, it makes no difference, so long as that string is associated with a usage event and regurgitated when reported. The cloud administrator can interpret it however it chooses. For simple organizations, it could be identical to the project_id, or even just blank. The project_id holds the network information, and the account_id tracks the usage and other notifications.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'>There's no good reason for Nova to have to model an organization internally; it certainly wouldn't match all the possible org structures available. <o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><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'>Devin Carlen <<a href="mailto:devin.carlen@gmail.com">devin.carlen@gmail.com</a>><br><b>Date: </b>Thu, 3 Feb 2011 12:02:38 -0800<br><b>To: </b>Monsyne Dragon <<a href="mailto:mdragon@rackspace.com">mdragon@rackspace.com</a>><br><b>Cc: </b><<a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a>><br><b>Subject: </b>Re: [Openstack] Pondering multi-tenant needs in nova.<o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Courier New";color:black'>We were just talking about this the other day.  We definitely need some kind of further hierarchy.  I think a typical kind of use case for multi-tenant could be something like:</span><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Courier New";color:black'>Enterprise contains Organizations</span><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Courier New";color:black'>Organizations contain Organizations and Projects</span><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Courier New";color:black'>Projects contain Instances, etc.</span><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Courier New";color:black'>In this structure enterprise is just a top level organization.  If we structure it this way it would make metering and billing pretty simple.</span><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Courier New";color:black'> </span><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p></o:p></span></p></div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p><div><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'>On Feb 2, 2011, at 5:37 PM, Monsyne Dragon wrote:<o:p></o:p></span></p></div><p class=MsoNormal style='margin-bottom:12.0pt'><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p><div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'>I am sorting out some possible implementations for the multi-tenant-accounting blueprint, and the related system-usage-records bp,<br>and I just wanted to run this by anyone interested in such matters.<br><br>Basically, for multitenant purposes we need to introduce the concept of an 'account' in nova, representing a customer,  that basically acts as a label for a group of resources (instances, etc), and for access control (i.e customer a cannot mess w/ customer b's stuff)<br><br>There was some confusion on how best to implement this, in relation to nova's project concept.  Projects are kind of like what we want an account to be, but there are some associations (like one project per network) which are not valid for our flat networking setup.  I am kind of straw-polling on which is better here:<br><br>The options are:<br>1) Create a new 'account' concept in nova,  with an account basically being a subgroup of a project (providers would use a single, default project, with additional projects added if needed for separate brands, or resellers, etc), add in access control per account as well as project, and make sure apis/auth specify account appropriately,  have some way for a default account to used (per project) so account doesn't get in the way for non-multitenant users.<br><br>2) having account == nova's "project", and changing the network associations, etc so projects can support our model (as well as current models).  Support for associating accounts (projects) together for resellers, etc would either be delegated outside of nova or added later (it's not a current requirement).<br><br>In either case, accounts would be identified by name, which would  be an opaque string an outside system/person would assign, and could structure to their needs (ie. for associating accounts with common prefixes, etc)<br><br>-- <br><br>--<br>   -Monsyne Dragon<br>   work:         210-312-4190<br>   mobile        210-441-0965<br>   google voice: 210-338-0336<br><br><br><br>Confidentiality Notice: This e-mail message (including any attached or<br>embedded documents) is intended for the exclusive and confidential use of the<br>individual or entity to which this message is addressed, and unless otherwise<br>expressly indicated, is confidential and privileged information of Rackspace.<br>Any dissemination, distribution or copying of the enclosed material is prohibited.<br>If you receive this transmission in error, please notify us immediately by e-mail<br>at <a href="mailto:abuse@rackspace.com">abuse@rackspace.com</a>, and delete the original message.<br>Your cooperation is appreciated.<br><br><br>_______________________________________________<br>Mailing list: <a href="https://launchpad.net/~openstack">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">https://launchpad.net/~openstack</a><br>More help   : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a><o:p></o:p></span></p></div></div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'><o:p> </o:p></span></p></div></div><p class=MsoNormal><span style='font-size:10.5pt;font-family:"Calibri","sans-serif";color:black'>_______________________________________________ Mailing list: <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a> Post to : <a href="mailto:openstack@lists.launchpad.net">openstack@lists.launchpad.net</a> Unsubscribe : <a href="https://launchpad.net/~openstack">https://launchpad.net/~openstack</a> More help : <a href="https://help.launchpad.net/ListHelp">https://help.launchpad.net/ListHelp</a> <o:p></o:p></span></p></div></body></html>