128
128
if sys.version_info < (3, 2):
129
129
configparser.Configparser = configparser.SafeConfigParser
132
132
stored_state_file = "clients.pickle"
134
134
logger = logging.getLogger()
2766
2765
def rfc3339_duration_to_delta(duration):
2767
2766
"""Parse an RFC 3339 "duration" and return a datetime.timedelta
2769
>>> rfc3339_duration_to_delta("P7D") == datetime.timedelta(7)
2771
>>> rfc3339_duration_to_delta("PT60S") == datetime.timedelta(0, 60)
2773
>>> rfc3339_duration_to_delta("PT60M") == datetime.timedelta(0, 3600)
2775
>>> rfc3339_duration_to_delta("PT24H") == datetime.timedelta(1)
2777
>>> rfc3339_duration_to_delta("P1W") == datetime.timedelta(7)
2779
>>> rfc3339_duration_to_delta("PT5M30S") == datetime.timedelta(0, 330)
2781
>>> rfc3339_duration_to_delta("P1DT3M20S") == datetime.timedelta(1, 200)
2768
>>> rfc3339_duration_to_delta("P7D")
2769
datetime.timedelta(7)
2770
>>> rfc3339_duration_to_delta("PT60S")
2771
datetime.timedelta(0, 60)
2772
>>> rfc3339_duration_to_delta("PT60M")
2773
datetime.timedelta(0, 3600)
2774
>>> rfc3339_duration_to_delta("PT24H")
2775
datetime.timedelta(1)
2776
>>> rfc3339_duration_to_delta("P1W")
2777
datetime.timedelta(7)
2778
>>> rfc3339_duration_to_delta("PT5M30S")
2779
datetime.timedelta(0, 330)
2780
>>> rfc3339_duration_to_delta("P1DT3M20S")
2781
datetime.timedelta(1, 200)
2785
2784
# Parsing an RFC 3339 duration with regular expressions is not
2865
2864
def string_to_delta(interval):
2866
2865
"""Parse a string and return a datetime.timedelta
2868
>>> string_to_delta('7d') == datetime.timedelta(7)
2870
>>> string_to_delta('60s') == datetime.timedelta(0, 60)
2872
>>> string_to_delta('60m') == datetime.timedelta(0, 3600)
2874
>>> string_to_delta('24h') == datetime.timedelta(1)
2876
>>> string_to_delta('1w') == datetime.timedelta(7)
2878
>>> string_to_delta('5m 30s') == datetime.timedelta(0, 330)
2867
>>> string_to_delta('7d')
2868
datetime.timedelta(7)
2869
>>> string_to_delta('60s')
2870
datetime.timedelta(0, 60)
2871
>>> string_to_delta('60m')
2872
datetime.timedelta(0, 3600)
2873
>>> string_to_delta('24h')
2874
datetime.timedelta(1)
2875
>>> string_to_delta('1w')
2876
datetime.timedelta(7)
2877
>>> string_to_delta('5m 30s')
2878
datetime.timedelta(0, 330)
3252
3251
if isinstance(s, bytes)
3253
3252
else s) for s in
3254
3253
value["client_structure"]]
3255
# .name, .host, and .checker_command
3256
for k in ("name", "host", "checker_command"):
3255
for k in ("name", "host"):
3257
3256
if isinstance(value[k], bytes):
3258
3257
value[k] = value[k].decode("utf-8")
3259
3258
if "key_id" not in value:
3269
3268
for key, value in
3270
3269
bytes_old_client_settings.items()}
3271
3270
del bytes_old_client_settings
3272
# .host and .checker_command
3273
3272
for value in old_client_settings.values():
3274
for attribute in ("host", "checker_command"):
3275
if isinstance(value[attribute], bytes):
3276
value[attribute] = (value[attribute]
3273
if isinstance(value["host"], bytes):
3274
value["host"] = (value["host"]
3278
3276
os.remove(stored_state_path)
3279
3277
except IOError as e:
3280
3278
if e.errno == errno.ENOENT: