[Kimchi-devel] [PATCH] [Wok] Implement update methods for object store

Paulo Ricardo Paz Vital pvital at linux.vnet.ibm.com
Thu Apr 7 18:13:13 UTC 2016


On Apr 07 02:38PM, Lucio Correia wrote:
> On 07-04-2016 14:28, Jose Ricardo Ziviani wrote:
> >  - This commit implements two new methods for object store, update_data
> >    and update_id. Now it's possible to update an existing data
> >    instead of delete/create.
> >
> >Signed-off-by: Jose Ricardo Ziviani <joserz at linux.vnet.ibm.com>
> >---
> >  src/wok/objectstore.py    | 13 +++++++++++++
> >  tests/test_objectstore.py | 11 +++++++++++
> >  2 files changed, 24 insertions(+)
> >
> >diff --git a/src/wok/objectstore.py b/src/wok/objectstore.py
> >index ff3796c..5ec87eb 100644
> >--- a/src/wok/objectstore.py
> >+++ b/src/wok/objectstore.py
> >@@ -94,6 +94,19 @@ class ObjectStoreSession(object):
> >                    (ident, obj_type, jsonstr, version))
> >          self.conn.commit()
> >
> >+    def update_data(self, obj_type, ident, data):
> >+        jsonstr = json.dumps(data)
> >+        c = self.conn.cursor()
> >+        c.execute('UPDATE objects SET json=? WHERE id=? AND type=?',
> >+                  (jsonstr, ident, obj_type))
> >+        self.conn.commit()
> I see that store() could be used to update existent entries as well, because
> it first removes the entry and then adds it again with same id.
> Is there any difference here?
> 

In addition to Lucio's question, I'd like to know which case impacts more in 
perfomance: update or remove/add (store again)?

> 
> >+
> >+    def update_id(self, obj_type, ident, new_ident):
> >+        c = self.conn.cursor()
> >+        c.execute('UPDATE objects SET id=? WHERE id=? AND type=?',
> >+                  (new_ident, ident, obj_type))
> >+        self.conn.commit()
> >+
> >
> >  class ObjectStore(object):
> >      def __init__(self, location=None):
> >diff --git a/tests/test_objectstore.py b/tests/test_objectstore.py
> >index 3ea7b70..d6ea434 100644
> >--- a/tests/test_objectstore.py
> >+++ b/tests/test_objectstore.py
> >@@ -82,6 +82,17 @@ class ObjectStoreTests(unittest.TestCase):
> >              item = session.get_object_version('fǒǒ', 'těst1')
> >              self.assertEquals(get_version().split('-')[0], item[0])
> >
> >+            # test update data
> >+            session.update_data('fǒǒ', 'těst1', {'α': 5})
> >+            item = session.get('fǒǒ', 'těst1')
> >+            self.assertEquals(5, item[u'α'])
> >+
> >+            # test update id
> >+            session.update_id('fǒǒ', 'těst1', 'těst2')
> >+            item = session.get('fǒǒ', 'těst2')
> >+            self.assertEquals(5, item[u'α'])
> >+
> >+
> >      def test_object_store_threaded(self):
> >          def worker(ident):
> >              with store as session:
> >
> >
> >
> >_______________________________________________
> >Kimchi-devel mailing list
> >Kimchi-devel at ovirt.org
> >http://lists.ovirt.org/mailman/listinfo/kimchi-devel
> >
> 
> 
> -- 
> Lucio Correia
> Software Engineer
> IBM LTC Brazil
> 
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel

-- 
Paulo Ricardo Paz Vital
Linux Technology Center, IBM Systems
http://www.ibm.com/linux/ltc/




More information about the Kimchi-devel mailing list