Revision 5e7485da pithos/backends/lib/sqlalchemy/node.py
b/pithos/backends/lib/sqlalchemy/node.py | ||
---|---|---|
119 | 119 |
# place an index on path |
120 | 120 |
Index('idx_nodes_path', self.nodes.c.path) |
121 | 121 |
|
122 |
#create policy table |
|
123 |
columns=[] |
|
124 |
columns.append(Column('node', Integer, |
|
125 |
ForeignKey('nodes.node', |
|
126 |
ondelete='CASCADE', |
|
127 |
onupdate='CASCADE'), |
|
128 |
primary_key=True)) |
|
129 |
columns.append(Column('key', String(255), primary_key=True)) |
|
130 |
columns.append(Column('value', String(255))) |
|
131 |
self.policies = Table('policy', metadata, *columns, mysql_engine='InnoDB') |
|
132 |
|
|
122 | 133 |
#create statistics table |
123 | 134 |
columns=[] |
124 | 135 |
columns.append(Column('node', Integer, |
... | ... | |
366 | 377 |
self.conn.execute(s).close() |
367 | 378 |
return True |
368 | 379 |
|
380 |
def policy_get(self, node): |
|
381 |
s = select([self.policies.c.key, self.policies.c.value], |
|
382 |
self.policies.c.node==node) |
|
383 |
r = self.conn.execute(s) |
|
384 |
d = dict(r.fetchall()) |
|
385 |
r.close() |
|
386 |
return d |
|
387 |
|
|
388 |
def policy_set(self, node, policy): |
|
389 |
#insert or replace |
|
390 |
for k, v in policy.iteritems(): |
|
391 |
s = self.policies.update().where(and_(self.policies.c.node == node, |
|
392 |
self.policies.c.key == k)) |
|
393 |
s = s.values(value = v) |
|
394 |
rp = self.conn.execute(s) |
|
395 |
rp.close() |
|
396 |
if rp.rowcount == 0: |
|
397 |
s = self.policies.insert() |
|
398 |
values = {'node':node, 'key':k, 'value':v} |
|
399 |
r = self.conn.execute(s, values) |
|
400 |
r.close() |
|
401 |
|
|
369 | 402 |
def statistics_get(self, node, cluster=0): |
370 | 403 |
"""Return population, total size and last mtime |
371 | 404 |
for all versions under node that belong to the cluster. |
Also available in: Unified diff