mirror of
https://github.com/NeoCloud/NeoNetwork
synced 2024-12-26 11:39:23 +08:00
update summary output
This commit is contained in:
parent
476ddad70d
commit
89662c7b7c
3 changed files with 60 additions and 36 deletions
2
.github/workflows/roa.yml
vendored
2
.github/workflows/roa.yml
vendored
|
@ -29,7 +29,7 @@ jobs:
|
||||||
eval "$(pyenv virtualenv-init -)"
|
eval "$(pyenv virtualenv-init -)"
|
||||||
pyenv install 3.8.2
|
pyenv install 3.8.2
|
||||||
pyenv shell 3.8.2
|
pyenv shell 3.8.2
|
||||||
pip install toml
|
pip install toml tabulate
|
||||||
|
|
||||||
- name: Run roa script
|
- name: Run roa script
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
2
.github/workflows/test-your-pr.yml
vendored
2
.github/workflows/test-your-pr.yml
vendored
|
@ -29,7 +29,7 @@ jobs:
|
||||||
eval "$(pyenv virtualenv-init -)"
|
eval "$(pyenv virtualenv-init -)"
|
||||||
pyenv install 3.8.2
|
pyenv install 3.8.2
|
||||||
pyenv shell 3.8.2
|
pyenv shell 3.8.2
|
||||||
pip install toml
|
pip install toml tabulate
|
||||||
|
|
||||||
- name: Run roa script
|
- name: Run roa script
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
|
@ -225,54 +225,78 @@ def make_roa_records(roa4, roa6):
|
||||||
|
|
||||||
|
|
||||||
def make_summary():
|
def make_summary():
|
||||||
|
from tabulate import tabulate
|
||||||
|
|
||||||
entities = load_entities()
|
entities = load_entities()
|
||||||
asn_table = load_asn(entities)
|
asn_table = load_asn(entities)
|
||||||
node_table = node_to_asn(set(asn_table.keys()))
|
node_table = node_to_asn(set(asn_table.keys()))
|
||||||
stream = StringIO()
|
stream = StringIO()
|
||||||
with redirect_stdout(stream):
|
with redirect_stdout(stream):
|
||||||
print("Entity table:")
|
print("Entity table:")
|
||||||
print("{:20}{:20}{}".format("Name", "Telegram", "Email"))
|
entity_table = tabulate(
|
||||||
for entity in sorted(
|
(
|
||||||
entities.values(), key=lambda entity: entity["name"].lower(),
|
(
|
||||||
):
|
entity["name"],
|
||||||
contact = entity.get("contact", {})
|
entity.get("contact", {}).get("email"),
|
||||||
email = contact.get("email", "")
|
entity.get("contact", {}).get("telegram"),
|
||||||
telegram = contact.get("telegram", "")
|
)
|
||||||
print("{:20}{:20}{}".format(entity["name"], telegram, email))
|
for entity in entities.values()
|
||||||
|
),
|
||||||
|
headers=["Name", "Email", "Telegram"],
|
||||||
|
tablefmt="presto",
|
||||||
|
)
|
||||||
|
print(entity_table)
|
||||||
print()
|
print()
|
||||||
print("AS table:")
|
print("AS table:")
|
||||||
print("{:15}{:<17}{:20}{}".format("Source", "ASN", "Owner", "Name"))
|
as_table = tabulate(
|
||||||
for asn, entity in sorted(asn_table.items(), key=lambda item: item[0]):
|
(
|
||||||
print(
|
(entity["source"], "AS{}".format(asn), entity["owner"], entity["name"])
|
||||||
"{:15}AS{:<15}{:20}{}".format(
|
for asn, entity in sorted(asn_table.items(), key=lambda item: item[0])
|
||||||
entity["source"], asn, entity["owner"], entity["name"]
|
),
|
||||||
)
|
headers=["Source", "ASN", "Owner", "Name"],
|
||||||
)
|
tablefmt="presto",
|
||||||
|
)
|
||||||
|
print(as_table)
|
||||||
print()
|
print()
|
||||||
print("Node table:")
|
print("Node table:")
|
||||||
print("{:<17}{}".format("ASN", "Name"))
|
node_table = tabulate(
|
||||||
for name, asn in sorted(node_table.items(), key=lambda item: item[1]):
|
(
|
||||||
print("AS{:<15}{}".format(asn, name))
|
("AS{}".format(asn), name)
|
||||||
|
for name, asn in sorted(node_table.items(), key=lambda item: item[1])
|
||||||
|
),
|
||||||
|
headers=["ASN", "Name"],
|
||||||
|
tablefmt="presto",
|
||||||
|
)
|
||||||
|
print(node_table)
|
||||||
print()
|
print()
|
||||||
print("Peer table:")
|
print("Peer table:")
|
||||||
peers = {
|
peer_table = tabulate(
|
||||||
item.stem: entity["to-peer"] for item, entity in iter_toml_file("peer")
|
(
|
||||||
}
|
(item.stem, downstream)
|
||||||
peers = [
|
for item, entity in iter_toml_file("peer")
|
||||||
(upstream, downstream)
|
for downstream in entity["to-peer"]
|
||||||
for upstream, downstream_list in peers.items()
|
),
|
||||||
for downstream in downstream_list
|
headers=["Upstream", "Downstream"],
|
||||||
]
|
tablefmt="presto",
|
||||||
print("{:>20} ~ {}".format("Upstream", "Downstream"))
|
colalign=("right",),
|
||||||
for upstream, downstream in peers:
|
)
|
||||||
print("{:>20} ~ {}".format(upstream, downstream))
|
print(peer_table)
|
||||||
print()
|
print()
|
||||||
print("Route table:")
|
print("Route table:")
|
||||||
print("{:17}{:30}{:30}{}".format("ASN", "Name", "Prefix", "Supernet"))
|
route_table = tabulate(
|
||||||
for entity in route_to_roa(asn_table):
|
(
|
||||||
entity["prefix"] = str(entity["prefix"])
|
(
|
||||||
entity["supernet"] = str(entity["supernet"]) if entity["supernet"] else ""
|
"AS{asn}".format_map(entity),
|
||||||
print("AS{asn:<15}{name:30}{prefix:30}{supernet}".format_map(entity))
|
entity["name"],
|
||||||
|
entity["prefix"] or "",
|
||||||
|
entity["supernet"] or "",
|
||||||
|
)
|
||||||
|
for entity in route_to_roa(asn_table)
|
||||||
|
),
|
||||||
|
headers=["ASN", "Name", "Prefix", "Supernet"],
|
||||||
|
tablefmt="presto",
|
||||||
|
)
|
||||||
|
print(route_table)
|
||||||
return stream.getvalue()
|
return stream.getvalue()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue