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