Ejemplo n.º 1
0
    def post(self, package_id):
        data  = self.request.json

        for srvdict in data:
            srvcpts = srvdict.pop("components")
            query = self.db.query(Server).filter_by(host=srvdict["host"])
            if query.count() == 0:
                srv = Server(**srvdict)
                self.db.add(srv)
            else:
                srv = query.one()
                for key, value in srvdict.iteritems():
                    srv.__setattr__(key, value)

            self.db.execute("DELETE FROM server_component \
                             WHERE server_id=:server_id \
                             AND component_id IN (SELECT id FROM component WHERE package_id=:package_id)", 
                             { "server_id": srv.id, "package_id": package_id} )
            
            for dic in srvcpts:
                component_id = self.db.query(Component.id).filter_by(package_id=package_id, name=dic["name"]).scalar()
                self.db.add( ServerComponent(srv.id, component_id, dic["active"]) )
            self.db.commit()