mirror of https://github.com/nucypher/nucypher.git
Include Fleet state nicknames and icon in ursula console status; Include state icon property
parent
f5a50d7a97
commit
4c428065b7
|
@ -91,23 +91,24 @@ class UrsulaCommandProtocol(LineReceiver):
|
|||
else:
|
||||
learning_status = "Unknown"
|
||||
|
||||
if self.ursula._current_teacher_node:
|
||||
teacher = 'Current Teacher ..... {}'.format(self.ursula._current_teacher_node)
|
||||
else:
|
||||
teacher = 'Current Teacher ..... No Teacher Connection'
|
||||
|
||||
stats = ['⇀URSULA {}↽'.format(self.ursula.nickname_icon),
|
||||
'{}'.format(self.ursula),
|
||||
'Uptime ............ {}'.format(maya.now() - self.start_time),
|
||||
'Start Time ........ {}'.format(self.start_time.slang_time()),
|
||||
'Fleet State ....... {}'.format(self.ursula.known_nodes.checksum[:7]),
|
||||
'Learning Status ... {}'.format(learning_status),
|
||||
'Learning Round .... Round #{}'.format(self.ursula._learning_round),
|
||||
'Operating Mode .... {}'.format('Federated' if self.ursula.federated_only else 'Decentralized'),
|
||||
'Rest Interface .... {}'.format(self.ursula.rest_url()),
|
||||
'Node Storage Type . {}'.format(self.ursula.node_storage._name.capitalize()),
|
||||
'Known Nodes ....... {}'.format(len(self.ursula.known_nodes)),
|
||||
'Work Orders ....... {}'.format(len(self.ursula._work_orders))]
|
||||
|
||||
if self.ursula._current_teacher_node:
|
||||
teacher = 'Current Teacher: {}: ({})'.format(self.ursula._current_teacher_node,
|
||||
self.ursula._current_teacher_node.rest_url())
|
||||
stats.append(teacher)
|
||||
'Uptime .............. {}'.format(maya.now() - self.start_time),
|
||||
'Start Time .......... {}'.format(self.start_time.slang_time()),
|
||||
'Fleet State ......... {2} {1} ({0})'.format(self.ursula.known_nodes.checksum[:7], self.ursula.known_nodes.nickname, self.ursula.known_nodes.icon),
|
||||
'Learning Status ..... {}'.format(learning_status),
|
||||
'Learning Round ...... Round #{}'.format(self.ursula._learning_round),
|
||||
'Operating Mode ...... {}'.format('Federated' if self.ursula.federated_only else 'Decentralized'),
|
||||
'Rest Interface ...... {}'.format(self.ursula.rest_url()),
|
||||
'Node Storage Type ... {}'.format(self.ursula.node_storage._name.capitalize()),
|
||||
'Known Nodes ......... {}'.format(len(self.ursula.known_nodes)),
|
||||
'Work Orders ......... {}'.format(len(self.ursula._work_orders)),
|
||||
teacher]
|
||||
|
||||
click.echo('\n' + '\n'.join(stats) + '\n')
|
||||
|
||||
|
|
|
@ -144,28 +144,17 @@ class FleetStateTracker:
|
|||
def nickname_metadata(self):
|
||||
return self._nickname_metadata
|
||||
|
||||
@property
|
||||
def icon(self) -> str:
|
||||
return self.nickname_metadata[0][1]
|
||||
|
||||
def addresses(self):
|
||||
return self._nodes.keys()
|
||||
|
||||
def icon(self):
|
||||
if self.checksum is constants.NO_KNOWN_NODES:
|
||||
return "NO FLEET STATE AVAILABLE"
|
||||
icon_template = """
|
||||
<div class="nucypher-nickname-icon" style="border-color:{color};">
|
||||
<div class="small">{number_of_nodes} nodes</div>
|
||||
<div class="symbols">
|
||||
<span class="single-symbol" style="color: {color}">{symbol}︎</span>
|
||||
</div>
|
||||
<br/>
|
||||
<span class="small-address">{fleet_state_checksum}</span>
|
||||
</div>
|
||||
""".replace(" ", "").replace('\n', "")
|
||||
return icon_template.format(
|
||||
number_of_nodes=len(self),
|
||||
color=self.nickname_metadata[0][0]['hex'],
|
||||
symbol=self.nickname_metadata[0][1],
|
||||
fleet_state_checksum=self.checksum[0:8]
|
||||
)
|
||||
def icon_html(self):
|
||||
return icon_from_checksum(checksum=self.checksum,
|
||||
number_of_nodes=len(self),
|
||||
nickname_metadata=self.nickname_metadata)
|
||||
|
||||
def snapshot(self):
|
||||
fleet_state_checksum_bytes = binascii.unhexlify(self.checksum)
|
||||
|
@ -187,8 +176,8 @@ class FleetStateTracker:
|
|||
# For now we store the sorted node list. Someday we probably spin this out into
|
||||
# its own class, FleetState, and use it as the basis for partial updates.
|
||||
self.states[checksum] = self.state_template(nickname=self.nickname,
|
||||
icon=self.icon(),
|
||||
nodes=sorted_nodes,
|
||||
icon=self.icon_html(),
|
||||
updated=self.updated,
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue