Updated the FS [1] as per the discussion. So the plan is to introduce a
generic api to
add semantic meta data to the first class objects.

AddResourceDetail - Add details to resource

* resourceIds - List of resource ids
* resourceType - Example - volume, nic etc.
* details - Map of key/value pairs

DeleteResourceDetail - Remove detail to resource

* resourceIds - List of resource ids
* resourceType - Example - volume, nic etc.
* details - Map of key/value pairs

ListResourceDetails - lists details for a resource

* resourceId 
* resourceType - Example - volume, nic etc.
* key
* value



[1] - 
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Ability+to+have+bett
er+control+over+first+class+objects+in+CS


On 09/05/13 3:04 PM, "Nitin Mehta" <nitin.me...@citrix.com> wrote:

>
>
>On 03/05/13 7:58 PM, "Chip Childers" <chip.child...@sungard.com> wrote:
>
>>On Fri, May 03, 2013 at 04:11:21AM +0000, Murali Reddy wrote:
>>> On 02/05/13 11:20 PM, "Chiradeep Vittal" <chiradeep.vit...@citrix.com>
>>> wrote:
>>> 
>>> >
>>> >
>>> >On 5/2/13 6:24 AM, "Chip Childers" <chip.child...@sungard.com> wrote:
>>> >
>>> >>On Thu, May 02, 2013 at 12:40:45PM +0530, Abhinandan Prateek wrote:
>>> >>> 
>>> >>> The tags are name-value pairs basically meant to label resources by
>>>a
>>> >>>user.
>>> >>> The purpose of the current API is to add useful meta information to
>>> >>> resources so that they can be meaningfully controlled by external
>>> >>>tools.
>>> >>> 
>>> >>> The current implementation of meta info API may look similar to
>>>tags
>>> >>>with
>>> >>> possible edition of a "system" or a "user" qualifier/flag in order
>>>to
>>> >>> control visibility.
>>> >>> 
>>> >>> But it is not so. Tags by definition are name value pairs where
>>>both
>>> >>>name
>>> >>> and value is a string. If we try to set the meta data information
>>>in
>>> >>>the
>>> >>> tags we are severely restricting the type of meta information that
>>>can
>>> >>>be
>>> >>> contained in the tags. For example if the "data-type" information
>>>is
>>> >>> required in this meta-data we will end up tweaking the tag system
>>>to
>>> >>>serve
>>> >>> some purpose that it is not meant for.
>>> >>> 
>>> >>> I strongly suggest that we do not try to contain the meta
>>>information
>>> >>>in a
>>> >>> restricted framework provided by tags.
>>> >>> 
>>> >>> -abhi
>>> >>
>>> >>I don't understand this argument.  Most primary data types have
>>>string
>>> >>representations, right?  (ref: JSON)
>>> >>
>>> >>Are you talking about complex types?  Or things like integers, long,
>>> >>datetime, etc...?
>>> >
>>> >I didn't understand it either.
>>> >Perhaps the issue is whether this meta-data is available to the
>>>end-user
>>> >or not? At least, tags are visible to the end-user. Is it the
>>>intention
>>> >that this 3rd party service do its magic in cahoots with the admin?
>>> >
>>> >
>>> 
>>> I would like to see this as, meta-data that has semantic meaning to
>>> CloudStack vs meta-data that's purely user meta-data that has no
>>>meaning
>>> to CloudStack and its plug-ins. 'Tags' falls in second category.
>>
>>Aren't tags used quite a bit for placement functions?
>>
>>> From e.g.
>>> use-case Nitin has put in FS, I do see valid case where a
>>>plug-in/feature
>>> of CloudStack or external systems like to book keep information of an
>>> entity. We already have a pattern of storing such meta data of entities
>>> (user_vm_details, cluster_details etc) in the details table which is
>>> basically a key-value pair. IMO, I see no harm if we can generalise it.
>>
>>I agree with generalizing it, absolutely.
>>
>>I think my question is:  Are we talking about CS internals only?  Or are
>>we talking about a truly generalized system that can contain metadata
>>for the system, the admins and the users?  When I read the functional
>>spec, 
>>it seems confusing as to which of these are being focused on, and if not
>>all of them are we getting ourselves into another situation where the
>>data authorization model is limited to some specific use case and not
>>flexible enough to extend in other ways?
>>
>>One other FS question:
>>
>>I see this: "DeployVM/UpdateVM/ - Add flag whether to display the VM to
>>end user".  What's the definition of "end user" in this scenario?  Are
>>account admins end users?  How about domain admins?  Is root admin the
>>only one that can see these things?
>
>Yes, currently as per the use case root admin is the only one allowed to
>give him control over the first class objects, but again this can be
>customized in future.
>
>>
>>It seems that the implementation is limited in scope yet again to a
>>boolean flag.  Similar to the question of metadata scope, why would this
>>not be designed to be a more robust data authorization model?
>>
>>It seems like this whole feature should be approached as:
>>
>>1 - Define a data structure (possibly extending tags) that allows for
>>flexible key/value pairs being attached to virtual entities within CS.
>
>As per suggestions by Murali, I am planning to introduce a generic api to
>add semantic meta data to the first class objects.
>
>>
>>2 - Build an ACL model that's actually able to handle different ACL
>>requirements for that metadata AS WELL AS for the foundational virtual
>>resources.
>
>Valid point. I am going to currently enable it for root admin but
>certainly the design can be extended to handle ACL requirements in future
>as well. 
>
>>
>>Perhaps I'm over complicating things, but this FS was only first created
>>on April 25 and I think that these concerns need to be discussed /
>>debated.
>>
>>-chip
>

Reply via email to