/
osmapi_prom.py
121 lines (86 loc) · 4.1 KB
/
osmapi_prom.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# -*- coding: utf-8 -*-
"""
The OsmApi module is a wrapper for the OpenStreetMap API.
"""
import osmapi
import prometheus_client
# Node operations
m_events = prometheus_client.Counter('openstreetmap_api_events',
'OpenStreetMap API requests',
['operation'])
m_bytes = prometheus_client.Counter('openstreetmap_api_bytes',
'OpenStreetMap API bytes',
['operation', 'direction'])
class OsmApi(osmapi.OsmApi):
#def __init__(self, *args, **kwargs):
# self.proxy = osmapi.OsmApi(*args, **kwargs)
def _doop(self, op, *args, **kwargs):
m_events.labels(op).inc()
self.operation = op
d = getattr(osmapi.OsmApi, op)(self, *args, **kwargs)
self.operation = 'undef'
return d
##################################################
# Node #
##################################################
def NodeGet(self, *args, **kwargs):
return self._doop('NodeGet', *args, **kwargs)
def NodeHistory(self, *args, **kwargs):
return self._doop('NodeHistory', *args, **kwargs)
def NodeWays(self, *args, **kwargs):
return self._doop('NodeWays', *args, **kwargs)
def NodeRelations(self, *args, **kwargs):
return self._doop('NodeRelations', *args, **kwargs)
def NodesGet(self, *args, **kwargs):
return self._doop('NodesGet', *args, **kwargs)
# ##################################################
# # Way #
# ##################################################
def WayGet(self, *args, **kwargs):
return self._doop('WayGet', *args, **kwargs)
def WayHistory(self, *args, **kwargs):
return self._doop('WayHistory', *args, **kwargs)
def WayRelations(self, *args, **kwargs):
return self._doop('WayRelations', *args, **kwargs)
def WayFull(self, *args, **kwargs):
return self._doop('WayFull', *args, **kwargs)
def WaysGet(self, *args, **kwargs):
return self._doop('WaysGet', *args, **kwargs)
# ##################################################
# # Relation #
# ##################################################
def RelationGet(self, *args, **kwargs):
return self._doop('RelationGet', *args, **kwargs)
def RelationHistory(self, *args, **kwargs):
return self._doop('RelationHistory', *args, **kwargs)
def RelationRelations(self, *args, **kwargs):
return self._doop('RelationRelations', *args, **kwargs)
def RelationFullRecur(self, *args, **kwargs):
return self._doop('RelationFullRecur', *args, **kwargs)
def RelationFull(self, *args, **kwargs):
return self._doop('RelationFull', *args, **kwargs)
def RelationsGet(self, *args, **kwargs):
return self._doop('RelationsGet', *args, **kwargs)
# ##################################################
# # Changeset #
# ##################################################
def ChangesetGet(self, *args, **kwargs):
return self._doop('ChangesetGet', *args, **kwargs)
def ChangesetDownload(self, *args, **kwargs):
return self._doop('ChangesetDownload', *args, **kwargs)
def ChangesetsGet(self, *args, **kwargs):
return self._doop('ChangesetsGet', *args, **kwargs)
# ##################################################
# # Notes #
# ##################################################
def NotesGet(self, *args, **kwargs):
return self._doop('NotesGet', *args, **kwargs)
def NoteGet(self, *args, **kwargs):
return self._doop('NoteGet', *args, **kwargs)
##################################################
# Internal http function #
##################################################
def _get(self, path):
d = osmapi.OsmApi._get(self, path)
m_bytes.labels(self.operation, 'rx').inc(len(d))
return d