mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
Problem: Code duplication between run_election_new_ methods
Solution: Factored out the duplicate code
This commit is contained in:
parent
c74af724e4
commit
9942867e47
@ -116,6 +116,31 @@ def run_election_new(args, bigchain):
|
|||||||
globals()[f'run_election_new_{args.election_type}'](args, bigchain)
|
globals()[f'run_election_new_{args.election_type}'](args, bigchain)
|
||||||
|
|
||||||
|
|
||||||
|
def create_new_election(sk, bigchain, election_class, data):
|
||||||
|
|
||||||
|
try:
|
||||||
|
key = load_node_key(sk)
|
||||||
|
voters = election_class.recipients(bigchain)
|
||||||
|
election = election_class.generate([key.public_key],
|
||||||
|
voters,
|
||||||
|
data, None).sign([key.private_key])
|
||||||
|
election.validate(bigchain)
|
||||||
|
except ValidationError as e:
|
||||||
|
logger.error(e)
|
||||||
|
return False
|
||||||
|
except FileNotFoundError as fd_404:
|
||||||
|
logger.error(fd_404)
|
||||||
|
return False
|
||||||
|
|
||||||
|
resp = bigchain.write_transaction(election, 'broadcast_tx_commit')
|
||||||
|
if resp == (202, ''):
|
||||||
|
logger.info('[SUCCESS] Submitted proposal with id: {}'.format(election.id))
|
||||||
|
return election.id
|
||||||
|
else:
|
||||||
|
logger.error('Failed to commit election proposal')
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
def run_election_new_upsert_validator(args, bigchain):
|
def run_election_new_upsert_validator(args, bigchain):
|
||||||
"""Initiates an election to add/update/remove a validator to an existing BigchainDB network
|
"""Initiates an election to add/update/remove a validator to an existing BigchainDB network
|
||||||
|
|
||||||
@ -137,27 +162,7 @@ def run_election_new_upsert_validator(args, bigchain):
|
|||||||
'node_id': args.node_id
|
'node_id': args.node_id
|
||||||
}
|
}
|
||||||
|
|
||||||
try:
|
return create_new_election(args.sk, bigchain, ValidatorElection, new_validator)
|
||||||
key = load_node_key(args.sk)
|
|
||||||
voters = ValidatorElection.recipients(bigchain)
|
|
||||||
election = ValidatorElection.generate([key.public_key],
|
|
||||||
voters,
|
|
||||||
new_validator, None).sign([key.private_key])
|
|
||||||
election.validate(bigchain)
|
|
||||||
except ValidationError as e:
|
|
||||||
logger.error(e)
|
|
||||||
return False
|
|
||||||
except FileNotFoundError as fd_404:
|
|
||||||
logger.error(fd_404)
|
|
||||||
return False
|
|
||||||
|
|
||||||
resp = bigchain.write_transaction(election, 'broadcast_tx_commit')
|
|
||||||
if resp == (202, ''):
|
|
||||||
logger.info('[SUCCESS] Submitted proposal with id: {}'.format(election.id))
|
|
||||||
return election.id
|
|
||||||
else:
|
|
||||||
logger.error('Failed to commit election proposal')
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def run_election_new_migration(args, bigchain):
|
def run_election_new_migration(args, bigchain):
|
||||||
@ -171,27 +176,7 @@ def run_election_new_migration(args, bigchain):
|
|||||||
:return: election_id or `False` in case of failure
|
:return: election_id or `False` in case of failure
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
return create_new_election(args.sk, bigchain, MigrationElection, {})
|
||||||
key = load_node_key(args.sk)
|
|
||||||
voters = MigrationElection.recipients(bigchain)
|
|
||||||
election = MigrationElection.generate([key.public_key],
|
|
||||||
voters,
|
|
||||||
{}, None).sign([key.private_key])
|
|
||||||
election.validate(bigchain)
|
|
||||||
except ValidationError as e:
|
|
||||||
logger.error(e)
|
|
||||||
return False
|
|
||||||
except FileNotFoundError as fd_404:
|
|
||||||
logger.error(fd_404)
|
|
||||||
return False
|
|
||||||
|
|
||||||
resp = bigchain.write_transaction(election, 'broadcast_tx_commit')
|
|
||||||
if resp == (202, ''):
|
|
||||||
logger.info('[SUCCESS] Submitted proposal with id: {}'.format(election.id))
|
|
||||||
return election.id
|
|
||||||
else:
|
|
||||||
logger.error('Failed to commit election proposal')
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
def run_election_approve(args, bigchain):
|
def run_election_approve(args, bigchain):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user