Shame on meeeeee
... forgot convert.py and some test files
This commit is contained in:
parent
7258d5fd60
commit
1219cb8060
58
check_patroni/convert.py
Normal file
58
check_patroni/convert.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
import click
|
||||
import re
|
||||
from typing import Union, Tuple
|
||||
|
||||
|
||||
def size_to_byte(value: str) -> int:
|
||||
"""Convert any size to Byte
|
||||
>>> size_to_byte('1TB')
|
||||
1099511627776
|
||||
>>> size_to_byte('5kB')
|
||||
5120
|
||||
>>> size_to_byte('.5kB')
|
||||
512
|
||||
>>> size_to_byte('.5 yoyo')
|
||||
Traceback (most recent call last):
|
||||
...
|
||||
click.exceptions.BadParameter: Invalid unit for size f{value}
|
||||
"""
|
||||
convert = {
|
||||
"B": 1,
|
||||
"kB": 1024,
|
||||
"MB": 1024 * 1024,
|
||||
"GB": 1024 * 1024 * 1024,
|
||||
"TB": 1024 * 1024 * 1024 * 1024,
|
||||
}
|
||||
val, unit = strtod(value)
|
||||
|
||||
if val is None:
|
||||
val = 1
|
||||
|
||||
if unit is None:
|
||||
# No unit, all good
|
||||
# we can round half bytes dont really make sense
|
||||
return round(val)
|
||||
else:
|
||||
try:
|
||||
multiplicateur = convert[unit]
|
||||
except KeyError:
|
||||
raise click.BadParameter("Invalid unit for size f{value}")
|
||||
|
||||
# we can round half bytes dont really make sense
|
||||
return round(val * multiplicateur)
|
||||
|
||||
|
||||
DBL_RE = re.compile(r"^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?")
|
||||
|
||||
|
||||
def strtod(value: str) -> Tuple[Union[float, None], Union[str, None]]:
|
||||
"""As most as possible close equivalent of strtod(3) function used by postgres to parse parameter values.
|
||||
>>> strtod(' A ') == (None, 'A')
|
||||
True
|
||||
"""
|
||||
value = str(value).strip()
|
||||
match = DBL_RE.match(value)
|
||||
if match:
|
||||
end = match.end()
|
||||
return float(value[:end]), value[end:]
|
||||
return None, value
|
33
test/json/cluster_has_replica_ko.json
Normal file
33
test/json/cluster_has_replica_ko.json
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"members": [
|
||||
{
|
||||
"name": "srv1",
|
||||
"role": "leader",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.3:8008/patroni",
|
||||
"host": "10.20.199.3",
|
||||
"port": 5432,
|
||||
"timeline": 51
|
||||
},
|
||||
{
|
||||
"name": "srv2",
|
||||
"role": "replica",
|
||||
"state": "stopped",
|
||||
"api_url": "https://10.20.199.4:8008/patroni",
|
||||
"host": "10.20.199.4",
|
||||
"port": 5432,
|
||||
"timeline": 51,
|
||||
"lag": "unknown"
|
||||
},
|
||||
{
|
||||
"name": "srv3",
|
||||
"role": "replica",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.5:8008/patroni",
|
||||
"host": "10.20.199.5",
|
||||
"port": 5432,
|
||||
"timeline": 51,
|
||||
"lag": 0
|
||||
}
|
||||
]
|
||||
}
|
33
test/json/cluster_has_replica_ko_lag.json
Normal file
33
test/json/cluster_has_replica_ko_lag.json
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"members": [
|
||||
{
|
||||
"name": "srv1",
|
||||
"role": "leader",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.3:8008/patroni",
|
||||
"host": "10.20.199.3",
|
||||
"port": 5432,
|
||||
"timeline": 51
|
||||
},
|
||||
{
|
||||
"name": "srv2",
|
||||
"role": "replica",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.4:8008/patroni",
|
||||
"host": "10.20.199.4",
|
||||
"port": 5432,
|
||||
"timeline": 51,
|
||||
"lag": 10241024
|
||||
},
|
||||
{
|
||||
"name": "srv3",
|
||||
"role": "replica",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.5:8008/patroni",
|
||||
"host": "10.20.199.5",
|
||||
"port": 5432,
|
||||
"timeline": 51,
|
||||
"lag": 20000000
|
||||
}
|
||||
]
|
||||
}
|
33
test/json/cluster_has_replica_ok_lag.json
Normal file
33
test/json/cluster_has_replica_ok_lag.json
Normal file
|
@ -0,0 +1,33 @@
|
|||
{
|
||||
"members": [
|
||||
{
|
||||
"name": "srv1",
|
||||
"role": "leader",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.3:8008/patroni",
|
||||
"host": "10.20.199.3",
|
||||
"port": 5432,
|
||||
"timeline": 51
|
||||
},
|
||||
{
|
||||
"name": "srv2",
|
||||
"role": "replica",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.4:8008/patroni",
|
||||
"host": "10.20.199.4",
|
||||
"port": 5432,
|
||||
"timeline": 51,
|
||||
"lag": 1024
|
||||
},
|
||||
{
|
||||
"name": "srv3",
|
||||
"role": "replica",
|
||||
"state": "running",
|
||||
"api_url": "https://10.20.199.5:8008/patroni",
|
||||
"host": "10.20.199.5",
|
||||
"port": 5432,
|
||||
"timeline": 51,
|
||||
"lag": 0
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in a new issue