No, I mean that if drivers are going to access database, then they should do it via a defined interface that limits what they can do to a sane set of operations. I'd still prefer that they didn't need extra access beyond the model update, but I don't know if that is possible.
Duncan Thomas On Dec 19, 2014 6:43 PM, "Amit Das" <[email protected]> wrote: > Thanks Duncan. > Do you mean hepler methods in the specific driver class? > On 19 Dec 2014 14:51, "Duncan Thomas" <[email protected]> wrote: > >> So our general advice has historical been 'drivers should not be >> accessing the db directly'. I haven't had chance to look at your driver >> code yet, I've been on vacation, but my suggestion is that if you >> absolutely must store something in the admin metadata rather than somewhere >> that is covered by the model update (generally provider location and >> provider auth) then writing some helper methods that wrap the context bump >> and db call would be better than accessing it directly from the driver. >> >> Duncan Thomas >> On Dec 18, 2014 11:41 PM, "Amit Das" <[email protected]> wrote: >> >>> Hi Stackers, >>> >>> I have been developing a Cinder driver for CloudByte storage and have >>> come across some scenarios where the driver needs to do create, read & >>> update operations on cinder database (volume_admin_metadata table). This is >>> required to establish a mapping between OpenStack IDs with the backend >>> storage IDs. >>> >>> Now, I have got some review comments w.r.t the usage of DB related >>> operations esp. w.r.t raising the context to admin. >>> >>> In short, it has been advised not to use "*context.get_admin_context()* >>> ". >>> >>> >>> https://review.openstack.org/#/c/102511/15/cinder/volume/drivers/cloudbyte/cloudbyte.py >>> >>> However, i get errors trying to use the default context as shown below: >>> >>> *2014-12-19 12:18:17.880 TRACE oslo.messaging.rpc.dispatcher File >>> "/opt/stack/cinder/cinder/db/sqlalchemy/api.py", line 103, in >>> is_admin_context* >>> *2014-12-19 12:18:17.880 TRACE oslo.messaging.rpc.dispatcher return >>> context.is_admin* >>> *2014-12-19 12:18:17.880 TRACE oslo.messaging.rpc.dispatcher >>> AttributeError: 'module' object has no attribute 'is_admin'* >>> >>> So what is the proper way to run these DB operations from within a >>> driver ? >>> >>> >>> Regards, >>> Amit >>> *CloudByte Inc.* <http://www.cloudbyte.com/> >>> >>> _______________________________________________ >>> OpenStack-dev mailing list >>> [email protected] >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >>> >>> >> _______________________________________________ >> OpenStack-dev mailing list >> [email protected] >> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> > _______________________________________________ > OpenStack-dev mailing list > [email protected] > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev > >
_______________________________________________ OpenStack-dev mailing list [email protected] http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
