yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #45635
[Bug 1023156] Re: [RFE] QuantumDbPluginV2 should support extended attributes on core resources
[Expired for neutron because there has been no activity for 60 days.]
** Changed in: neutron
Status: Incomplete => Expired
--
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to neutron.
https://bugs.launchpad.net/bugs/1023156
Title:
[RFE] QuantumDbPluginV2 should support extended attributes on core
resources
Status in neutron:
Expired
Bug description:
Quantum API extensions such as
https://blueprints.launchpad.net/quantum/+spec/provider-networks add
extended attributes to the request and response messages of existing
core resource actions (create, get, get collection, update, delete).
This category of extension is implemented within a plugin, typically
exposing details of how the plugin maps core API virtual resources to
physical networking mechanisms. See
https://bugs.launchpad.net/quantum/+bug/1023111 regarding enhancing
the Quantum extension framework to support extended attributes. This
bug addresses enhancing the
quantum.db.db_base_plugin_v2.QuantumDbPluginV2 base class to better
support extended attributes.
Currently, plugins supporting extended attributes can implement core
resource action methods (such as create_network) by calling the
overridden QuantumDbPluginV2 base class method, processing extended
request attributes, then finally adding extended response attributes
to the dictionary returned by the base method. Field selection for
both core and extended attributes can be supported in the
get_<resource> and get_<collection> methods by passing None as the
fields param to the base method, then calling
QuantumDbPLuginV2._fields on the complete network dictionary before
its returned. But supporting filtering across core and extended
attributes in the get_<collection> method is more difficult since
filtering of the core attributes is handled by
http://docs.sqlalchemy.org/en/rel_0_7/orm/query.html#sqlalchemy.orm.query.Query.filter
but that's not available for the extended attributes.
One enhancement would be to support extended attributes by "event
handler" methods as mentioned in the QuantumDbPluginV2 class's doc
string. The base class's create_<resource> methods could call a
_creating_<resource> method to allow the plugin to process the
extended request attributes, probably after the UUID is assigned but
before the DB record is created. The base class's create_<resource>,
update_<resource>, get_<resource>, and get_<collection> methods could
call an _extend_<resource>_dict method after the core attributes are
added (but before field selection for get_*) to allow the plugin to
add extended response attributes to the dictionary. The base class
would have "pass" implementations of these event handlers that would
only be overridden by plugin implementations when needed.
The other enhancement would be to address the DB querying and
filtering so that core and extended attributes can be handled
uniformly. This might involve joins between the base class and plugin-
specific tables, or might involve some mechanism to extend the base
model classes with plugin-specific columns.
To manage notifications about this bug go to:
https://bugs.launchpad.net/neutron/+bug/1023156/+subscriptions