ud3tn/python-ud3tn-utils/ud3tn_utils/aap/bin/helpers.py
Maximilian Nitsch fa6d159d10 python-ud3tn-utils: Add AAP + AAP2 tools
- Moves `tools/aap` + `tools/aap2` to `python-ud3tn-utils/aap*/bin/` to
  add the scripts to the python package
- Adds a `main()` function to each script to reference it
- Define `logger` as global variable
- Adds a symbolic link to keep compatibility with existing tooling
- Moves `tools/aap/aap_test.py` to `test/functional/`
- Adds additional dependencies (pyd3tn, cbor) to python-ud3tn-utils and
  the corresponding nix package
- Add scripts to python-ud3tn-utils `pyproject.toml`

Signed-off-by: Maximilian Nitsch <maximilian.nitsch@d3tn.com>
2024-07-01 10:10:56 +02:00

82 lines
2 KiB
Python

#!/usr/bin/env python3
# SPDX-License-Identifier: BSD-3-Clause OR Apache-2.0
# encoding: utf-8
import logging
import sys
DEFAULT_CONFIG_AGENT_ID_DTN = "config"
DEFAULT_CONFIG_AGENT_ID_IPN = "9000"
def initialize_logger(verbosity: int):
log_level = {
0: logging.WARN,
1: logging.INFO,
}.get(verbosity, logging.DEBUG)
logging.basicConfig(
level=log_level,
format="%(asctime)s %(levelname)s: %(message)s",
)
return logging.getLogger(sys.argv[0])
def add_common_parser_arguments(parser):
add_socket_group_parser_arguments(parser)
add_agentid_parser_argument(parser)
add_verbosity_parser_argument(parser)
def add_verbosity_parser_argument(parser):
parser.add_argument(
"-v", "--verbosity",
action="count",
default=0,
help="increase output verbosity"
)
def add_agentid_parser_argument(parser):
parser.add_argument(
"-a", "--agentid",
default=None,
help="the agent id to register with uD3TN (default: random UUID)",
)
def add_socket_group_parser_arguments(parser):
socket_group = parser.add_mutually_exclusive_group()
socket_group.add_argument(
"--socket",
metavar="PATH",
default="ud3tn.socket",
type=str,
help=(
"AAP UNIX domain socket to connect to "
"(default: ud3tn.socket)"
),
)
socket_group.add_argument(
"--tcp",
nargs=2,
metavar=("IP", "PORT"),
type=str,
help="AAP TCP socket to connect to",
)
def get_node_eid_prefix(eid):
if eid[0:6] == "dtn://":
return "dtn://" + eid.split("/")[2] + "/"
elif eid[0:4] == "ipn:":
return eid.split(".")[0] + "."
else:
raise ValueError("Cannot determine the node prefix for the given EID.")
def get_config_eid(eid):
return get_node_eid_prefix(eid) + (
DEFAULT_CONFIG_AGENT_ID_DTN
if eid[0] == "d" # get_node_eid_prefix already checks everything else
else DEFAULT_CONFIG_AGENT_ID_IPN
)