41 lines
1.0 KiB
Python
41 lines
1.0 KiB
Python
|
# standard imports
|
||
|
import logging
|
||
|
|
||
|
# external imports
|
||
|
from chainlib.connection import RPCConnection
|
||
|
from chainlib.chain import ChainSpec
|
||
|
from chainlib.eth.gas import balance
|
||
|
|
||
|
# local imports
|
||
|
from cic_eth.db.models.role import AccountRole
|
||
|
from cic_eth.db.models.base import SessionBase
|
||
|
|
||
|
logg = logging.getLogger().getChild(__name__)
|
||
|
|
||
|
|
||
|
def health(*args, **kwargs):
|
||
|
|
||
|
session = SessionBase.create_session()
|
||
|
|
||
|
logg.info('kwargs {} {}'.format(kwargs, args))
|
||
|
config = kwargs['config']
|
||
|
chain_spec = ChainSpec.from_chain_str(config.get('CIC_CHAIN_SPEC'))
|
||
|
|
||
|
gas_provider = AccountRole.get_address('GAS_GIFTER', session=session)
|
||
|
session.close()
|
||
|
|
||
|
rpc = RPCConnection.connect(chain_spec, 'default')
|
||
|
o = balance(gas_provider)
|
||
|
r = rpc.do(o)
|
||
|
try:
|
||
|
r = int(r, 16)
|
||
|
except TypeError:
|
||
|
r = int(r)
|
||
|
gas_min = int(config.get('ETH_GAS_GIFTER_MINIMUM_BALANCE'))
|
||
|
if r < gas_min:
|
||
|
logg.error('EEK! gas gifter has balance {}, below minimum {}'.format(r, gas_min))
|
||
|
return False
|
||
|
|
||
|
|
||
|
return True
|