On 11/05/2016 01:15 AM, Steve Martinelli wrote:
The keystone team has a new spec being proposed for the Ocata release,
it essentially boils down to adding properties / metadata for projects
(for now) [1].
Yes, I'd seen that particular spec review and found it interesting in a
couple ways.
We have somewhat had support for this, we have an "extras" column
defined in our database schema, whatever a user puts in a request that
doesn't match up with our API, those key-values are dumped into the
"extras" column. It's not a pleasant user experience, since you can't
really "unset" the data easily, or grab it, or update it. There's
actually been patches to keystoneclient for getting around this, but its
rather hacky and hardcodes a lot of values [2] [3]
"not a pleasant user experience" would be an understatement :)
In addition to the unpleasant user experience, there is the additional
problem that jamming such information into a JSON BLOB and storing it in
a TEXT field in a relational database means none of the information
stored in the field can be indexed which means there's no ability to
search on particular key or value information.
I've added nova and cinder here since the APIs that are being proposed
are more or less carbon copies of what is available through their APIs
(for server and volumes, respectively). What has been your project's
experience with handling metadata / properties? I assume that its been
there a while and you can't remove it. If you could go back and redo
things, would you do it another way? Would you take a more purist stance
and enforce more strict APIs, metadata be damned?
Yes. I would get rid of the server metadata API that is in the Compute
API. I believe the server tags API in the Compute API is appropriate for
user-defined taxonomy of servers. For non user-defined things like
system metadata, I prefer to have schema-defined attributes that are
standardize and typed but a structured "properties" API can be useful as
long as the key and value fields are indexable and reasonably sized.
I also added horizon because i'm curious about the impact this causes
when representing a resource.
Personally, I am for the idea, we've had numerous requests from
operators about providing this support and I like to make them happy.
I am most concerned actually about the resistance from some in the
Keystone contributor community to storing quota *limits* [1] for users
and projects. Right now, every service project needs to store
information about quota limits for all users and projects, and the
services each do this annoyingly differently. Keystone is the thing that
stores attributes of a user or a project. Limits of various quantitative
resources in the system are an attribute of a user or a project. This
information belongs in Keystone, IMHO, with a good REST API that other
services can use to grab this information.
Best,
-jay
[1] limits, not usages.
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: [email protected]?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev