Merge branch 'lash/default-token' into 'master'
cic-eth: Add default token setting to cic-eth with api See merge request grassrootseconomics/cic-internal-integration!113
This commit is contained in:
commit
dd94b8a190
19
apps/cic-eth/cic_eth/admin/token.py
Normal file
19
apps/cic-eth/cic_eth/admin/token.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# standard imports
|
||||||
|
import logging
|
||||||
|
|
||||||
|
# external imports
|
||||||
|
import celery
|
||||||
|
|
||||||
|
# local imports
|
||||||
|
from cic_eth.task import BaseTask
|
||||||
|
|
||||||
|
celery_app = celery.current_app
|
||||||
|
logg = logging.getLogger()
|
||||||
|
|
||||||
|
|
||||||
|
@celery_app.task(bind=True, base=BaseTask)
|
||||||
|
def default_token(self):
|
||||||
|
return {
|
||||||
|
'symbol': self.default_token_symbol,
|
||||||
|
'address': self.default_token_address,
|
||||||
|
}
|
65
apps/cic-eth/cic_eth/runnable/info.py
Normal file
65
apps/cic-eth/cic_eth/runnable/info.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
#!python3
|
||||||
|
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
# standard imports
|
||||||
|
import logging
|
||||||
|
import argparse
|
||||||
|
import os
|
||||||
|
|
||||||
|
# external imports
|
||||||
|
import confini
|
||||||
|
import celery
|
||||||
|
|
||||||
|
# local imports
|
||||||
|
from cic_eth.api import Api
|
||||||
|
|
||||||
|
logging.basicConfig(level=logging.WARNING)
|
||||||
|
logg = logging.getLogger()
|
||||||
|
|
||||||
|
default_format = 'terminal'
|
||||||
|
default_config_dir = os.environ.get('CONFINI_DIR', '/usr/local/etc/cic')
|
||||||
|
|
||||||
|
|
||||||
|
argparser = argparse.ArgumentParser()
|
||||||
|
argparser.add_argument('-i', '--chain-spec', dest='i', type=str, help='chain spec')
|
||||||
|
argparser.add_argument('-c', type=str, default=default_config_dir, help='config root to use')
|
||||||
|
argparser.add_argument('-q', type=str, default='cic-eth', help='celery queue to submit transaction tasks to')
|
||||||
|
argparser.add_argument('--env-prefix', default=os.environ.get('CONFINI_ENV_PREFIX'), dest='env_prefix', type=str, help='environment prefix for variables to overwrite configuration')
|
||||||
|
argparser.add_argument('-v', action='store_true', help='Be verbose')
|
||||||
|
argparser.add_argument('-vv', help='be more verbose', action='store_true')
|
||||||
|
args = argparser.parse_args()
|
||||||
|
|
||||||
|
if args.v == True:
|
||||||
|
logging.getLogger().setLevel(logging.INFO)
|
||||||
|
elif args.vv == True:
|
||||||
|
logging.getLogger().setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
config_dir = os.path.join(args.c)
|
||||||
|
os.makedirs(config_dir, 0o777, True)
|
||||||
|
config = confini.Config(config_dir, args.env_prefix)
|
||||||
|
config.process()
|
||||||
|
args_override = {
|
||||||
|
'CIC_CHAIN_SPEC': getattr(args, 'i'),
|
||||||
|
}
|
||||||
|
config.dict_override(args_override, 'cli args')
|
||||||
|
config.censor('PASSWORD', 'DATABASE')
|
||||||
|
config.censor('PASSWORD', 'SSL')
|
||||||
|
logg.debug('config loaded from {}:\n{}'.format(config_dir, config))
|
||||||
|
|
||||||
|
|
||||||
|
celery_app = celery.Celery(broker=config.get('CELERY_BROKER_URL'), backend=config.get('CELERY_RESULT_URL'))
|
||||||
|
|
||||||
|
queue = args.q
|
||||||
|
|
||||||
|
api = Api(config.get('CIC_CHAIN_SPEC'), queue=queue)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
t = api.default_token()
|
||||||
|
token_info = t.get()
|
||||||
|
print('Default token symbol: {}'.format(token_info['symbol']))
|
||||||
|
print('Default token address: {}'.format(token_info['address']))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
@ -10,7 +10,7 @@ version = (
|
|||||||
0,
|
0,
|
||||||
11,
|
11,
|
||||||
0,
|
0,
|
||||||
'beta.8',
|
'beta.9',
|
||||||
)
|
)
|
||||||
|
|
||||||
version_object = semver.VersionInfo(
|
version_object = semver.VersionInfo(
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
[eth]
|
[eth]
|
||||||
provider = http://localhost:63545
|
provider = http://localhost:63545
|
||||||
health_modules = cic_eth.check.db,cic_eth.check.gas
|
|
||||||
gas_gifter_minimum_balance = 10000000000000000000000
|
gas_gifter_minimum_balance = 10000000000000000000000
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
[eth]
|
[eth]
|
||||||
provider = http://localhost:8545
|
provider = http://localhost:8545
|
||||||
gas_gifter_minimum_balance = 10000000000000000000000
|
gas_gifter_minimum_balance = 10000000000000000000000
|
||||||
health_modules = cic_eth.check.db,cic_eth.check.gas
|
|
||||||
|
@ -3,8 +3,12 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
|
# external imports
|
||||||
|
from chainlib.eth.erc20 import ERC20
|
||||||
|
|
||||||
# local imports
|
# local imports
|
||||||
from cic_eth.api import Api
|
from cic_eth.api import Api
|
||||||
|
from cic_eth.task import BaseTask
|
||||||
|
|
||||||
script_dir = os.path.dirname(os.path.realpath(__file__))
|
script_dir = os.path.dirname(os.path.realpath(__file__))
|
||||||
root_dir = os.path.dirname(script_dir)
|
root_dir = os.path.dirname(script_dir)
|
||||||
@ -28,3 +32,26 @@ def api(
|
|||||||
):
|
):
|
||||||
chain_str = str(default_chain_spec)
|
chain_str = str(default_chain_spec)
|
||||||
return Api(chain_str, queue=None, callback_param='foo')
|
return Api(chain_str, queue=None, callback_param='foo')
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def foo_token_symbol(
|
||||||
|
default_chain_spec,
|
||||||
|
foo_token,
|
||||||
|
eth_rpc,
|
||||||
|
contract_roles,
|
||||||
|
):
|
||||||
|
|
||||||
|
c = ERC20(default_chain_spec)
|
||||||
|
o = c.symbol(foo_token, sender_address=contract_roles['CONTRACT_DEPLOYER'])
|
||||||
|
r = eth_rpc.do(o)
|
||||||
|
return c.parse_symbol(r)
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture(scope='function')
|
||||||
|
def default_token(
|
||||||
|
foo_token,
|
||||||
|
foo_token_symbol,
|
||||||
|
):
|
||||||
|
BaseTask.default_token_symbol = foo_token_symbol
|
||||||
|
BaseTask.default_token_address = foo_token
|
||||||
|
@ -34,6 +34,7 @@ def celery_includes():
|
|||||||
'cic_eth.admin.ctrl',
|
'cic_eth.admin.ctrl',
|
||||||
'cic_eth.admin.nonce',
|
'cic_eth.admin.nonce',
|
||||||
'cic_eth.admin.debug',
|
'cic_eth.admin.debug',
|
||||||
|
'cic_eth.admin.token',
|
||||||
'cic_eth.eth.account',
|
'cic_eth.eth.account',
|
||||||
'cic_eth.callbacks.noop',
|
'cic_eth.callbacks.noop',
|
||||||
'cic_eth.callbacks.http',
|
'cic_eth.callbacks.http',
|
||||||
|
21
apps/cic-eth/tests/unit/admin/test_default_token.py
Normal file
21
apps/cic-eth/tests/unit/admin/test_default_token.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# external imports
|
||||||
|
import celery
|
||||||
|
|
||||||
|
|
||||||
|
def test_default_token(
|
||||||
|
default_token,
|
||||||
|
celery_session_worker,
|
||||||
|
foo_token,
|
||||||
|
foo_token_symbol,
|
||||||
|
):
|
||||||
|
|
||||||
|
s = celery.signature(
|
||||||
|
'cic_eth.admin.token.default_token',
|
||||||
|
[],
|
||||||
|
queue=None,
|
||||||
|
)
|
||||||
|
t = s.apply_async()
|
||||||
|
r = t.get()
|
||||||
|
|
||||||
|
assert r['address'] == foo_token
|
||||||
|
assert r['symbol'] == foo_token_symbol
|
@ -1,4 +1,4 @@
|
|||||||
cic_base[full_graph]~=0.1.2a79
|
cic_base[full_graph]~=0.1.2b2
|
||||||
cic-eth~=0.11.0b7
|
cic-eth~=0.11.0b9
|
||||||
cic-notify~=0.4.0a4
|
cic-notify~=0.4.0a4
|
||||||
cic-types~=0.1.0a10
|
cic-types~=0.1.0a10
|
||||||
|
Loading…
Reference in New Issue
Block a user