rda-python-metrics 1.0.23__py3-none-any.whl → 1.0.25__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of rda-python-metrics might be problematic. Click here for more details.

@@ -104,6 +104,29 @@ def domain_ipinfo_record(dmname):
104
104
 
105
105
  return None
106
106
 
107
+ #
108
+ # try to get hostname via socket for given ip address
109
+ #
110
+ def get_ip_hostname(ip, iprec, record):
111
+
112
+ if iprec:
113
+ if 'hostname' in iprec and iprec['hostname']:
114
+ record['hostname'] = iprec['hostname']
115
+ record['org_type'] = PgDBI.get_org_type(None, record['hostname'])
116
+ return
117
+ record['hostname'] = ip
118
+ if 'domain' in iprec and iprec['domain']:
119
+ record['hostname'] += '.' + iprec['domain']
120
+ record['org_type'] = PgDBI.get_org_type(None, record['hostname'])
121
+ return
122
+
123
+ try:
124
+ hostrec = socket.gethostbyaddr(ip)
125
+ record['hostname'] = hostrec[1][0] if hostrec[1] else hostrec[0]
126
+ record['org_type'] = PgDBI.get_org_type(None, record['hostname'])
127
+ except Exception as e:
128
+ PgLOG.pglog("socket: {} - {}".format(ip, str(e)), PgLOG.LOGWRN)
129
+
107
130
  #
108
131
  # get a ipinfo record for given ip address
109
132
  #
@@ -117,9 +140,7 @@ def get_ipinfo_record(ip):
117
140
  return None
118
141
 
119
142
  record = {'ip' : ip, 'stat_flag' : 'A', 'hostname' : ip, 'org_type' : '-'}
120
- if 'hostname' in iprec:
121
- record['hostname'] = iprec['hostname']
122
- record['org_type'] = PgDBI.get_org_type(None, record['hostname'])
143
+ get_ip_hostname(ip, iprec, record)
123
144
  record['lat'] = float(iprec['latitude']) if iprec['latitude'] else 0
124
145
  record['lon'] = float(iprec['longitude']) if iprec['longitude'] else 0
125
146
  if 'org' in iprec: record['org_name'] = iprec['org']
@@ -153,6 +174,7 @@ def get_geoip2_record(ip):
153
174
  return None
154
175
 
155
176
  record = {'ip' : ip, 'stat_flag' : 'M', 'org_type' : '-'}
177
+ get_ip_hostname(ip, None, record)
156
178
  record['lat'] = float(city.location.latitude) if city.location.latitude else 0
157
179
  record['lon'] = float(city.location.longitude) if city.location.longitude else 0
158
180
  record['country'] = get_country_name_code(city.country.name)
@@ -160,17 +182,8 @@ def get_geoip2_record(ip):
160
182
  record['region'] = PgLOG.convert_chars(city.subdivisions.most_specific.name) if city.subdivisions.most_specific.name else None
161
183
  record['postal'] = city.postal.code
162
184
  record['timezone'] = city.location.time_zone
163
- record['hostname'] = ip
164
185
  record['ipinfo'] = json.dumps(object_to_dict(city))
165
186
 
166
- try:
167
- hostrec = socket.gethostbyaddr(ip)
168
- except Exception as e:
169
- PgLOG.pglog("socket: {} - {}".format(ip, str(e)), PgLOG.LOGWRN)
170
- return record
171
- record['hostname'] = hostrec[1][0] if hostrec[1] else hostrec[0]
172
- record['org_type'] = PgDBI.get_org_type(None, record['hostname'])
173
-
174
187
  return record
175
188
 
176
189
  #
@@ -223,7 +236,7 @@ def set_ipinfo(ip, ipopt = True):
223
236
 
224
237
  if ip in IPRECS:
225
238
  pgrec = IPRECS[ip]
226
- if not pgrec or not ipopt or pgrec['stat_flag'] == 'A': return pgrec
239
+ if pgrec or not ipopt: return pgrec
227
240
  else:
228
241
  pgrec = PgDBI.pgget('ipinfo', '*', "ip = '{}'".format(ip))
229
242
 
@@ -101,9 +101,10 @@ def fill_ip_info(option, inputs, table):
101
101
  else:
102
102
  date = input + "-01-01"
103
103
  edate = input + "-12-31"
104
- while date <= edate:
104
+ while True:
105
105
  (ndate, cond) = get_next_date(date, edate)
106
106
  cntall += func(date, cond)
107
+ if ndate >= edate: break
107
108
  date = PgUtil.adddate(ndate, 0, 0, 1)
108
109
 
109
110
  if cntall > 2:
@@ -113,13 +114,13 @@ def get_next_date(date, edate):
113
114
 
114
115
  if date < edate:
115
116
  ndate = PgUtil.enddate(date, 'M')
116
- if ndate > edate: ndate = edate
117
- if date < ndate:
118
- cond = f"BETWEEN '{date}' AND '{ndate}'"
117
+ if ndate < edate: edate = ndate
118
+ if date < edate:
119
+ cond = f"BETWEEN '{date}' AND '{edate}'"
119
120
  else:
120
121
  cond = f"= '{date}'"
121
122
 
122
- return (ndate, cond)
123
+ return (edate, cond)
123
124
 
124
125
 
125
126
  def fix_allusage_records(date, cnd):
@@ -204,7 +205,7 @@ def fix_wuser_records(date, cnd):
204
205
  def fix_ipinfo_records(date, cnd):
205
206
 
206
207
  table = 'ipinfo'
207
- cond = f"adddate {cnd} AND region IS NULL"
208
+ cond = f"adddate {cnd} AND stat_flag = 'M'"
208
209
  pgrecs = PgDBI.pgmget(table, 'ip', cond, PgLOG.LGEREX)
209
210
  if not pgrecs: return 0
210
211
  cnt = len(pgrecs['ip']) if pgrecs else 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rda_python_metrics
3
- Version: 1.0.23
3
+ Version: 1.0.25
4
4
  Summary: RDA Python Package to gather and view data usage metrics
5
5
  Author-email: Zaihua Ji <zji@ucar.edu>
6
6
  Project-URL: Homepage, https://github.com/NCAR/rda-python-metrics
@@ -1,4 +1,4 @@
1
- rda_python_metrics/PgIPInfo.py,sha256=SP8vTyCV6owV942xwLvS4CqnyPdkMTEVuQzyB-dkeNk,8644
1
+ rda_python_metrics/PgIPInfo.py,sha256=KMU3_SuuGJgJby3xmmGZ2VGudCgsmI9j4ttZYaTMJeQ,9021
2
2
  rda_python_metrics/PgView.py,sha256=r6otb3DjfiaQJdg0z8bZQAOlhr4JnrXJzp9wgWh_8qQ,24369
3
3
  rda_python_metrics/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
4
4
  rda_python_metrics/fillawsusage.py,sha256=SZH9G4jruKvavqSr9DiVmHVW929E60tJGUkv8CK3GQI,8152
@@ -11,7 +11,7 @@ rda_python_metrics/fillcountry.py,sha256=7i5LNi3scRoyRCT6t7aeNTGKOpxzJ2mA9tnvUqj
11
11
  rda_python_metrics/fillendtime.py,sha256=skZttlpoY19g0dGwqGQI8t_1YPPTPEXwg3EfNlfL90I,2533
12
12
  rda_python_metrics/fillglobususage.py,sha256=ahz8XnnJdD_AbSYqJ34lWmDuzws_-SNmCR8QE20aovA,8539
13
13
  rda_python_metrics/fillglobususage.usg,sha256=1GgmCP22IQZdADwL5Mmkz3v8Ws-G7U3teQ1AxRJfV_4,637
14
- rda_python_metrics/fillipinfo.py,sha256=w3IEyxFo8oVGWw8ILAr_GHZ4d8BOf1wWcChIp6OQAtk,6745
14
+ rda_python_metrics/fillipinfo.py,sha256=AKxdFb3Kfra54Vb9zBt6HwqOGpX4dhF5CIH4q_yFPE0,6771
15
15
  rda_python_metrics/fillipinfo.usg,sha256=YeCR58xGv0emqHUZ_9R977HrqaeBwbd6j5QRF2Lc7TA,702
16
16
  rda_python_metrics/filloneorder.py,sha256=ADHbcKCDh9bJunnxYbkbjwU2QpC43hvGlLWaURHNxkg,5433
17
17
  rda_python_metrics/filloneorder.usg,sha256=mtOySKx6-D4k2bbTcmi6cSYtINiycRyHQkHozi0CQu0,1466
@@ -44,9 +44,9 @@ rda_python_metrics/viewwebfile.py,sha256=HSMNkQQawonu6W3blV7g9UbJuNy9VAOn9COqgmj
44
44
  rda_python_metrics/viewwebfile.usg,sha256=lTNi8Yu8BUJuExEDJX-vsJyWUSUIQTS-DiiBEVFo33s,10054
45
45
  rda_python_metrics/viewwebusage.py,sha256=ES2lI8NaCeCpTGi94HU-cDRBxHMiUBbplyYsZf2KqF0,16650
46
46
  rda_python_metrics/viewwebusage.usg,sha256=OVDZ78p87E3HLW34ZhasNJ7Zmw8XXjmZPPWZfRhPLXo,9936
47
- rda_python_metrics-1.0.23.dist-info/licenses/LICENSE,sha256=1dck4EAQwv8QweDWCXDx-4Or0S8YwiCstaso_H57Pno,1097
48
- rda_python_metrics-1.0.23.dist-info/METADATA,sha256=FIeMLBkhmlMKHNmm7Uq74ipwiT6L-u4lTL5lVGl8AjI,761
49
- rda_python_metrics-1.0.23.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
50
- rda_python_metrics-1.0.23.dist-info/entry_points.txt,sha256=YfFLzlE3rdufSV471VsDnfYptnt1lR08aSrxPXlKqlY,1185
51
- rda_python_metrics-1.0.23.dist-info/top_level.txt,sha256=aoBgbR_o70TP0QmMW0U6inRHYtfKld47OBmnWnLnDOs,19
52
- rda_python_metrics-1.0.23.dist-info/RECORD,,
47
+ rda_python_metrics-1.0.25.dist-info/licenses/LICENSE,sha256=1dck4EAQwv8QweDWCXDx-4Or0S8YwiCstaso_H57Pno,1097
48
+ rda_python_metrics-1.0.25.dist-info/METADATA,sha256=A0OujABjyHGsOSxkjJ6ekGmXyl-DhOGc9zKKDuJxL_w,761
49
+ rda_python_metrics-1.0.25.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
50
+ rda_python_metrics-1.0.25.dist-info/entry_points.txt,sha256=YfFLzlE3rdufSV471VsDnfYptnt1lR08aSrxPXlKqlY,1185
51
+ rda_python_metrics-1.0.25.dist-info/top_level.txt,sha256=aoBgbR_o70TP0QmMW0U6inRHYtfKld47OBmnWnLnDOs,19
52
+ rda_python_metrics-1.0.25.dist-info/RECORD,,