Compare commits

..

25 Commits

Author SHA1 Message Date
nolash
0490d41aa5 Merge remote-tracking branch 'origin/master' into philip/fix-filter-callbacks 2021-04-15 18:11:30 +02:00
nolash
e2eca335f1 More dependency fun 2021-04-14 20:42:27 +02:00
nolash
be32fc75fc Add value to token data from giftto 2021-04-14 20:28:05 +02:00
nolash
bb930ce148 Add token lookup for faucet gift callback 2021-04-14 19:21:35 +02:00
nolash
5f99048154 Add mock block in callback test code 2021-04-14 18:33:33 +02:00
nolash
2df8e8f299 Add registry address to eth tracker 2021-04-14 15:47:05 +02:00
nolash
c0a8be637f Propagate chainlib, cic-eth-registry upgrade 2021-04-14 14:09:04 +02:00
nolash
ddf3ba0d22 Bump version, upgrade cic-eth-registry 2021-04-14 14:06:17 +02:00
nolash
60033e9f9e Upgrade chainlib 2021-04-14 14:04:01 +02:00
nolash
30b47f05ef Merge remote-tracking branch 'origin/master' into philip/fix-filter-callbacks 2021-04-14 13:42:58 +02:00
nolash
7a958c6f89 Add toplevel callback filter test 2021-04-14 13:42:14 +02:00
nolash
be65da9924 Add test for callback filter 2021-04-14 13:26:12 +02:00
nolash
fe4bef5290 Add test for giftto filter 2021-04-14 13:20:34 +02:00
nolash
5345803dc7 Add transferfrom filter 2021-04-14 12:52:39 +02:00
nolash
bf8ddd0a5c Pass parse filter 2021-04-14 12:44:00 +02:00
nolash
537ea782c7 SOLVED dependency hell 2021-04-14 11:28:01 +02:00
nolash
0c7b78fdf2 Dependency hell 2021-04-14 11:17:57 +02:00
nolash
bb556b5c45 Merge remote-tracking branch 'origin/master' into philip/fix-filter-callbacks 2021-04-14 10:19:14 +02:00
nolash
25847de75e Add callback filter test file stub 2021-04-14 10:18:31 +02:00
nolash
6535760abb Simplify conditional scope 2021-04-14 08:11:06 +02:00
689f04c1be Merge branch 'master' of gitlab.com:grassrootseconomics/cic-internal-integration into philip/fix-filter-callbacks 2021-04-13 21:42:16 +03:00
f03d3c4390 Minor fixes but still failing. 2021-04-13 21:41:32 +03:00
32ce66ce43 updates deps. 2021-04-13 21:40:55 +03:00
b8fbf512fb Adds rudimentary fix for "parse_gifto" method. 2021-04-12 16:53:49 +03:00
3aaa42a1a7 Updates sarafu-faucet deps 2021-04-12 16:52:43 +03:00
23 changed files with 2240 additions and 172 deletions

4
.gitignore vendored
View File

@@ -1,6 +1,2 @@
service-configs/*
!service-configs/.gitkeep
**/node_modules/
__pycache__
*.pyc
*.o

View File

@@ -67,7 +67,6 @@ class ERC20TransferFilter(SyncFilter):
tx.status == Status.SUCCESS,
block.timestamp,
)
#db_session.flush()
db_session.commit()
db_session.flush()
return True

View File

@@ -77,7 +77,7 @@ def main():
if len(syncer_backends) == 0:
logg.info('found no backends to resume')
syncer_backends.append(SQLBackend.initial(chain_spec, block_offset))
syncers.append(SQLBackend.initial(chain_spec, block_offset))
else:
for syncer_backend in syncer_backends:
logg.info('resuming sync session {}'.format(syncer_backend))

View File

@@ -66,10 +66,10 @@ class ExtendedTx:
self.status_code = n
def asdict(self):
def to_dict(self):
o = {}
for attr in dir(self):
if attr[0] == '_' or attr in ['set_actors', 'set_tokens', 'set_status', 'asdict', 'rpc']:
if attr[0] == '_' or attr in ['set_actors', 'set_tokens', 'set_status', 'to_dict']:
continue
o[attr] = getattr(self, attr)
return o

View File

@@ -78,19 +78,19 @@ class CallbackFilter(SyncFilter):
o = c.amount(faucet_contract, sender_address=self.caller_address)
r = conn.do(o)
transfer_data['value'] = c.parse_amount(r)
transfer_data['amount'] = add_0x(c.parse_amount(r))
return ('tokengift', transfer_data)
def call_back(self, transfer_type, result):
result['chain_spec'] = result['chain_spec'].asdict()
logg.debug('result {}'.format(result))
s = celery.signature(
self.method,
[
result,
transfer_type,
int(result['status_code'] != 0),
int(result['status_code'] == 0),
],
queue=self.queue,
)
@@ -106,7 +106,7 @@ class CallbackFilter(SyncFilter):
# s_translate.link(s)
# s_translate.apply_async()
t = s.apply_async()
return t
return s
def parse_data(self, tx, conn):
@@ -167,9 +167,8 @@ class CallbackFilter(SyncFilter):
tokentx.set_status(1)
else:
tokentx.set_status(0)
result = tokentx.asdict()
t = self.call_back(transfer_type, result)
logg.info('callback success task id {} tx {} queue {}'.format(t, tx.hash, t.queue))
t = self.call_back(transfer_type, tokentx.to_dict())
logg.info('callback success task id {} tx {}'.format(t, tx.hash))
except UnknownContractError:
logg.debug('callback filter {}:{} skipping "transfer" method on unknown contract {} tx {}'.format(tx.queue, tx.method, transfer_data['to'], tx.hash))

View File

@@ -39,7 +39,6 @@ from cic_eth.queue import (
from cic_eth.callbacks import (
Callback,
http,
noop,
#tcp,
redis,
)

View File

@@ -33,9 +33,7 @@ elif args.v:
config = confini.Config(args.c, args.env_prefix)
config.process()
config.add(args.q, '_CELERY_QUEUE', True)
config.censor('PASSWORD', 'DATABASE')
logg.debug('config loaded from {}:\n{}'.format(args.c, config))
# connect to database
dsn = dsn_from_config(config)

View File

@@ -6,10 +6,11 @@ import time
import semver
# local imports
from cic_notify.error import PleaseCommitFirstError
logg = logging.getLogger()
version = (0, 4, 0, 'alpha.4')
version = (0, 4, 0, 'alpha.3')
version_object = semver.VersionInfo(
major=version[0],
@@ -17,4 +18,27 @@ version_object = semver.VersionInfo(
patch=version[2],
prerelease=version[3],
)
version_string = str(version_object)
def git_hash():
import subprocess
git_hash = subprocess.run(['git', 'rev-parse', 'HEAD'], capture_output=True)
git_hash_brief = git_hash.stdout.decode('utf-8')[:8]
return git_hash_brief
try:
version_git = git_hash()
version_string += '+build.{}'.format(version_git)
except FileNotFoundError:
time_string_pair = str(time.time()).split('.')
version_string += '+build.{}{:<09d}'.format(
time_string_pair[0],
int(time_string_pair[1]),
)
logg.info(f'Final version string will be {version_string}')
__version_string__ = version_string

View File

@@ -1,5 +1,6 @@
[metadata]
name = cic-notify
version= 0.4.0a3
description = CIC notifications service
author = Louis Holbrook
author_email = dev@holbrook.no

View File

@@ -1,31 +1,9 @@
# standard imports
import logging
import subprocess
import time
from setuptools import setup
# third-party imports
# local imports
from cic_notify.version import version_string
logg = logging.getLogger()
def git_hash():
git_hash = subprocess.run(['git', 'rev-parse', 'HEAD'], capture_output=True)
git_hash_brief = git_hash.stdout.decode('utf-8')[:8]
return git_hash_brief
try:
version_git = git_hash()
version_string += '+build.{}'.format(version_git)
except FileNotFoundError:
time_string_pair = str(time.time()).split('.')
version_string += '+build.{}{:<09d}'.format(
time_string_pair[0],
int(time_string_pair[1]),
)
logg.info(f'Final version string will be {version_string}')
requirements = []
@@ -47,6 +25,6 @@ while True:
test_requirements_file.close()
setup(
version=version_string,
install_requires=requirements,
tests_require=test_requirements)
tests_require=test_requirements,
)

View File

@@ -1,6 +1,6 @@
[celery]
BROKER_URL=redis://
RESULT_URL=redis://
BROKER_URL=redis://redis:6379
RESULT_URL=redis://redis:6379
[redis]
HOSTNAME=redis

View File

@@ -57,17 +57,19 @@ arg_parser.add_argument('--env-prefix',
help='environment prefix for variables to overwrite configuration')
args = arg_parser.parse_args()
# parse config
config = Config(config_dir=args.c, env_prefix=args.env_prefix)
config.process()
config.censor('PASSWORD', 'DATABASE')
# define log levels
if args.vv:
logging.getLogger().setLevel(logging.DEBUG)
elif args.v:
logging.getLogger().setLevel(logging.INFO)
# parse config
config = Config(config_dir=args.c, env_prefix=args.env_prefix)
config.process()
config.censor('PASSWORD', 'DATABASE')
logg.debug('config loaded from {}:\n{}'.format(args.c, config))
# log config vars
logg.debug(config)
# initialize elements
# set up translations

View File

@@ -6,7 +6,6 @@ import tempfile
# third party imports
import celery
import i18n
import redis
from confini import Config
@@ -34,18 +33,18 @@ arg_parser.add_argument('-vv', action='store_true', help='be more verbose')
arg_parser.add_argument('--env-prefix', default=os.environ.get('CONFINI_ENV_PREFIX'), dest='env_prefix', type=str, help='environment prefix for variables to overwrite configuration')
args = arg_parser.parse_args()
# parse config
config = Config(config_dir=args.c, env_prefix=args.env_prefix)
config.process()
config.censor('PASSWORD', 'DATABASE')
# define log levels
if args.vv:
logging.getLogger().setLevel(logging.DEBUG)
elif args.v:
logging.getLogger().setLevel(logging.INFO)
# parse config
config = Config(args.c, args.env_prefix)
config.process()
config.add(args.q, '_CELERY_QUEUE', True)
config.censor('PASSWORD', 'DATABASE')
logg.debug('config loaded from {}:\n{}'.format(args.c, config))
logg.debug(config)
# connect to database
data_source_name = dsn_from_config(config)
@@ -78,10 +77,6 @@ if key_file_path:
validate_presence(path=key_file_path)
Signer.key_file_path = key_file_path
# set up translations
i18n.load_path.append(config.get('APP_LOCALE_PATH'))
i18n.set('fallback', config.get('APP_LOCALE_FALLBACK'))
# set up celery
current_app = celery.Celery(__name__)

View File

@@ -83,8 +83,8 @@ def process_incoming_transfer_callback(result: dict, param: str, status_code: in
# collect result data
recipient_blockchain_address = result.get('recipient')
sender_blockchain_address = result.get('sender')
token_symbol = result.get('destination_token_symbol')
value = result.get('destination_token_value')
token_symbol = result.get('token_symbol')
value = result.get('destination_value')
# try to find users in system
recipient_user = session.query(User).filter_by(blockchain_address=recipient_blockchain_address).first()

View File

@@ -1,4 +1,4 @@
cic_base[full_graph]~=0.1.2a68
cic-eth~=0.11.0b3
cic-notify~=0.4.0a4
cic-notify~=0.4.0a3
cic-types~=0.1.0a10

View File

@@ -25,13 +25,13 @@ from chainlib.eth.block import (
block_by_number,
Block,
)
from chainlib.hash import keccak256_string_to_hex
from chainlib.eth.hash import keccak256_string_to_hex
from chainlib.eth.address import to_checksum_address
from chainlib.eth.erc20 import ERC20
from chainlib.eth.gas import OverrideGasOracle
from chainlib.eth.nonce import RPCNonceOracle
from chainlib.eth.tx import TxFactory
from chainlib.jsonrpc import jsonrpc_template
from chainlib.eth.rpc import jsonrpc_template
from chainlib.eth.error import EthException
from chainlib.chain import ChainSpec
from crypto_dev_signer.eth.signer import ReferenceSigner as EIP155Signer

View File

@@ -25,13 +25,13 @@ from chainlib.eth.block import (
block_by_number,
Block,
)
from chainlib.hash import keccak256_string_to_hex
from chainlib.eth.hash import keccak256_string_to_hex
from chainlib.eth.address import to_checksum_address
from chainlib.eth.erc20 import ERC20
from chainlib.eth.gas import OverrideGasOracle
from chainlib.eth.nonce import RPCNonceOracle
from chainlib.eth.tx import TxFactory
from chainlib.jsonrpc import jsonrpc_template
from chainlib.eth.rpc import jsonrpc_template
from chainlib.eth.error import EthException
from chainlib.chain import ChainSpec
from crypto_dev_signer.eth.signer import ReferenceSigner as EIP155Signer

View File

@@ -24,7 +24,7 @@ from chainlib.eth.gas import RPCGasOracle
from chainlib.eth.nonce import RPCNonceOracle
from cic_types.processor import generate_metadata_pointer
from eth_accounts_index import AccountRegistry
from eth_contract_registry import Registry
from contract_registry import Registry
from crypto_dev_signer.keystore.dict import DictKeystore
from crypto_dev_signer.eth.signer.defaultsigner import ReferenceSigner as EIP155Signer
from crypto_dev_signer.keystore.keyfile import to_dict as to_keyfile_dict

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"dependencies": {
"cic-client-meta": "0.0.7-alpha.6",
"cic-client-meta": "^0.0.7-alpha.6",
"vcard-parser": "^1.0.0"
}
}

View File

@@ -22,7 +22,7 @@ from hexathon import (
strip_0x,
add_0x,
)
from chainsyncer.backend.memory import MemBackend
from chainsyncer.backend import MemBackend
from chainsyncer.driver import HeadSyncer
from chainlib.chain import ChainSpec
from chainlib.eth.connection import EthHTTPConnection
@@ -32,7 +32,7 @@ from chainlib.eth.block import (
block_by_number,
Block,
)
from chainlib.hash import keccak256_string_to_hex
from chainlib.eth.hash import keccak256_string_to_hex
from chainlib.eth.address import to_checksum_address
from chainlib.eth.erc20 import ERC20
from chainlib.eth.gas import (
@@ -40,7 +40,7 @@ from chainlib.eth.gas import (
balance,
)
from chainlib.eth.tx import TxFactory
from chainlib.jsonrpc import jsonrpc_template
from chainlib.eth.rpc import jsonrpc_template
from chainlib.eth.error import EthException
from cic_types.models.person import (
Person,
@@ -57,7 +57,6 @@ custodial_tests = [
'local_key',
'gas',
'faucet',
'ussd'
]
metadata_tests = [

View File

@@ -446,7 +446,7 @@ services:
deploy:
restart_policy:
condition: on-failure
command: "/root/start_tasker.sh -q cic-notify -vv"
command: "/root/start_tasker.sh -q cic-notify"
cic-meta-server:
@@ -494,8 +494,6 @@ services:
DATABASE_NAME: cic_ussd
DATABASE_ENGINE: postgresql
DATABASE_DRIVER: psycopg2
CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://redis}
CELERY_RESULT_URL: ${CELERY_BROKER_URL:-redis://redis}
PGP_PASSPHRASE: merman
SERVER_PORT: 9000
CIC_META_URL: ${CIC_META_URL:-http://meta:8000}

View File

@@ -5,7 +5,6 @@ CREATE DATABASE "cic_notify";
CREATE DATABASE "cic_meta";
CREATE DATABASE "cic_signer";
CREATE DATABASE "cic_ussd";
CREATE DATABASE "chain_sync";
GRANT ALL PRIVILEGES
ON DATABASE "cic_cache", "cic_eth", "cic_notify", "cic_meta", "cic_signer", "cic_ussd", "chain_sync"
ON DATABASE "cic_cache", "cic_eth", "cic_notify", "cic_meta", "cic_signer", "cic_ussd"
TO grassroots;