Skip to content

Commit

Permalink
Refactor to remove code repetition
Browse files Browse the repository at this point in the history
Also minor code cleanup and explicit sudo execution as the indy
user.

Signed-off-by: Mike Bailey <[email protected]>
  • Loading branch information
Mike Bailey committed Sep 24, 2018
1 parent c249967 commit f3def66
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 33 deletions.
54 changes: 25 additions & 29 deletions scripts/current_validators
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ log.addHandler(my_handler)

def parseTransactions(ledger):

log.info("Parsing ledger transactions into dictionary")
log.info('Parsing ledger transactions into dictionary')

validators = collections.OrderedDict()
# validators is dictionary of dictionaries that maps dest to the current values of the attritubes for that dest
Expand Down Expand Up @@ -88,49 +88,45 @@ def parseTransactions(ledger):


def getLedger():
prefix = ['sudo', '-i', '-u', 'indy']
suffix = ['/usr/local/bin/read_ledger', '--type', 'pool', '--count']
if (getpass.getuser() != 'indy'):
command = prefix + suffix
else:
command = suffix
try:
if (getpass.getuser() == 'indy'):
completed = subprocess.run(
['/usr/local/bin/read_ledger', '--type', 'pool', '--count'],
check=True,
stdout=subprocess.PIPE,
)
else:
completed = subprocess.run(
['sudo', '/usr/local/bin/read_ledger', '--type', 'pool', '--count'],
check=True,
stdout=subprocess.PIPE,
)
completed = subprocess.run(
command,
check=True,
stdout=subprocess.PIPE)
except subprocess.CalledProcessError as err:
log.error('ERROR attempting to run read_ledger --count subprocess: {}'.format(err))
raise
transCount = completed.stdout.decode('utf-8').strip()
log.info("{} entries in ledger.".format(transCount))
log.info('{} entries in ledger.'.format(transCount))

suffix = ['/usr/local/bin/read_ledger', '--type', 'pool', '--frm', '1', '--to', completed.stdout]
if (getpass.getuser() != 'indy'):
command = prefix + suffix
else:
command = suffix
try:
if (getpass.getuser() == 'indy'):
completed = subprocess.run(
['/usr/local/bin/read_ledger', '--type', 'pool', '--frm', '1', '--to', completed.stdout],
check=True,
stdout=subprocess.PIPE,
)
else:
completed = subprocess.run(
['sudo', '/usr/local/bin/read_ledger', '--type', 'pool', '--frm', '1', '--to', completed.stdout],
check=True,
stdout=subprocess.PIPE,
)
completed = subprocess.run(
command,
check=True,
stdout=subprocess.PIPE)
except subprocess.CalledProcessError as err:
log.error('ERROR attempting to run read_ledger subprocess to capture ledger data: {}'.format(err))
raise

ledgerLines = completed.stdout.decode('utf-8').splitlines()
log.info("{} ledger entries received.".format(len(ledgerLines)))
log.info('{} ledger entries received.'.format(len(ledgerLines)))
return ledgerLines

def writeResult(jsonOut):

if jsonOut:
log.info("Serializing info on validators to json")
log.info('Serializing info on validators to json')
count = len(validators)
print('[', end='')
for i in validators.keys():
Expand All @@ -140,7 +136,7 @@ def writeResult(jsonOut):
count -= 1
print(']')
else:
log.info("Serializing info on validators to csv")
log.info('Serializing info on validators to csv')
fieldnames = ['alias', 'blskey', 'client_ip', 'client_port', 'node_ip', 'node_port', 'services', 'dest', 'identifier']
writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames)
writer.writeheader()
Expand Down
8 changes: 4 additions & 4 deletions scripts/node_address_list
Original file line number Diff line number Diff line change
Expand Up @@ -25,22 +25,22 @@ log.setLevel(logging.INFO)
log.addHandler(my_handler)

def getCurrentValidatorsAddressPort():
log.info("extracting addresses and ports of current validators")
log.info('extracting addresses and ports of current validators')
validatorsAddressPort = collections.OrderedDict()
jsonStr = input()
log.info(jsonStr)
validators = json.loads(jsonStr)
for validator in validators:
if 'VALIDATOR' in validator['services']:
validatorsAddressPort[validator["alias"]] = {"address": validator["node_ip"], "port": validator["node_port"]}
validatorsAddressPort[validator['alias']] = {'address': validator['node_ip'], 'port': validator['node_port']}
return validatorsAddressPort

def writeResult(validatorsAddressPort, outputFormat):
if outputFormat == 'json':
log.info("Serializing validators' address and port to json")
print(json.dumps(validatorsAddressPort))
elif outputFormat == 'aws':
log.info("Writing a string suitable for a source string for an AWS security group")
log.info('Writing a string suitable for a source string for an AWS security group')
addressOnly = []
for key in validatorsAddressPort.keys():
addressOnly.append(validatorsAddressPort[key]['address'])
Expand All @@ -52,7 +52,7 @@ def writeResult(validatorsAddressPort, outputFormat):
writer = csv.DictWriter(sys.stdout, fieldnames=fieldnames)
writer.writeheader()
for key in validatorsAddressPort.keys():
validatorsAddressPort[key]["alias"] = key
validatorsAddressPort[key]['alias'] = key
writer.writerow(validatorsAddressPort[key])

def parseInputs():
Expand Down

0 comments on commit f3def66

Please sign in to comment.