]>
Commit | Line | Data |
---|---|---|
eafe8130 TL |
1 | from flask import request, jsonify |
2 | from flask_restful import Resource | |
3 | import datetime | |
4 | import hashlib | |
5 | import json | |
6 | import copy | |
7 | import psycopg2 | |
8 | ||
9 | class Device(Resource): | |
10 | def __init__(self, report=None): | |
11 | super(Device, self).__init__() | |
12 | self.report = report | |
13 | with open('/opt/telemetry/pg_pass.txt', 'r') as f: | |
14 | p = f.read() | |
15 | self.pg_password = p.strip() | |
16 | ||
17 | def put(self): | |
18 | self.report = request.get_json(force=True) | |
19 | ||
20 | self.post_to_postgres() | |
21 | ||
22 | return jsonify(status=True) | |
23 | ||
24 | def _connect_pg(self): | |
25 | return psycopg2.connect( | |
26 | host='localhost', | |
27 | database='telemetry', | |
28 | user='telemetry', | |
29 | password=self.pg_password, | |
30 | ) | |
31 | ||
32 | def post_to_postgres(self): | |
33 | conn = self._connect_pg() | |
34 | cur = conn.cursor() | |
35 | for devid, devinfo in self.report: | |
36 | for stamp, report in devinfo: | |
37 | cur.execute( | |
38 | 'INSERT INTO device_report (device_id, report_stamp, report) VALUES (%s,%s,%s) ON CONFLICT DO NOTHING', | |
39 | (devid, stamp, report)) | |
40 | conn.commit() |