neuronum 7.0.2__tar.gz → 7.0.3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of neuronum might be problematic. Click here for more details.
- {neuronum-7.0.2/neuronum.egg-info → neuronum-7.0.3}/PKG-INFO +1 -1
- {neuronum-7.0.2 → neuronum-7.0.3}/cli/main.py +123 -2
- {neuronum-7.0.2 → neuronum-7.0.3/neuronum.egg-info}/PKG-INFO +1 -1
- {neuronum-7.0.2 → neuronum-7.0.3}/setup.py +1 -1
- {neuronum-7.0.2 → neuronum-7.0.3}/LICENSE.md +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/README.md +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/cli/__init__.py +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/neuronum/__init__.py +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/neuronum/neuronum.py +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/neuronum.egg-info/SOURCES.txt +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/neuronum.egg-info/dependency_links.txt +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/neuronum.egg-info/entry_points.txt +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/neuronum.egg-info/requires.txt +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/neuronum.egg-info/top_level.txt +0 -0
- {neuronum-7.0.2 → neuronum-7.0.3}/setup.cfg +0 -0
|
@@ -664,7 +664,7 @@ Send the command "Ping Node" to Cellai
|
|
|
664
664
|
@click.command()
|
|
665
665
|
@click.option('--d', is_flag=True, help="Start node in detached mode")
|
|
666
666
|
def start_node(d):
|
|
667
|
-
|
|
667
|
+
update_node_at_start()
|
|
668
668
|
pid_file = Path.cwd() / "status.txt"
|
|
669
669
|
system_name = platform.system()
|
|
670
670
|
active_pids = []
|
|
@@ -792,7 +792,7 @@ def check_node():
|
|
|
792
792
|
@click.command()
|
|
793
793
|
@click.option('--d', is_flag=True, help="Restart node in detached mode")
|
|
794
794
|
def restart_node(d):
|
|
795
|
-
|
|
795
|
+
update_node_at_start()
|
|
796
796
|
pid_file = Path.cwd() / "status.txt"
|
|
797
797
|
system_name = platform.system()
|
|
798
798
|
|
|
@@ -923,6 +923,7 @@ async def async_stop_node():
|
|
|
923
923
|
click.echo("Error: Unable to stop some node processes.")
|
|
924
924
|
|
|
925
925
|
|
|
926
|
+
@click.command()
|
|
926
927
|
def update_node():
|
|
927
928
|
click.echo("Update your Node")
|
|
928
929
|
env_data = {}
|
|
@@ -1042,6 +1043,125 @@ async def async_update_node(node_type: str, descr: str, partners:str) -> None:
|
|
|
1042
1043
|
click.echo(f"Neuronum Node '{nodeID}' updated!")
|
|
1043
1044
|
|
|
1044
1045
|
|
|
1046
|
+
def update_node_at_start():
|
|
1047
|
+
click.echo("Update your Node")
|
|
1048
|
+
env_data = {}
|
|
1049
|
+
|
|
1050
|
+
try:
|
|
1051
|
+
with open(".env", "r") as f:
|
|
1052
|
+
for line in f:
|
|
1053
|
+
key, value = line.strip().split("=")
|
|
1054
|
+
env_data[key] = value
|
|
1055
|
+
|
|
1056
|
+
host = env_data.get("HOST", "")
|
|
1057
|
+
|
|
1058
|
+
except FileNotFoundError:
|
|
1059
|
+
click.echo("Error: .env with credentials not found")
|
|
1060
|
+
return
|
|
1061
|
+
except Exception as e:
|
|
1062
|
+
click.echo(f"Error reading .env file: {e}")
|
|
1063
|
+
return
|
|
1064
|
+
|
|
1065
|
+
if host.startswith("CMTY_"):
|
|
1066
|
+
node_type = questionary.select(
|
|
1067
|
+
"Community Cells can only create private Nodes",
|
|
1068
|
+
choices=["private"]
|
|
1069
|
+
).ask()
|
|
1070
|
+
else:
|
|
1071
|
+
node_type = questionary.select(
|
|
1072
|
+
"Who can view your Node?:",
|
|
1073
|
+
choices=["public", "private", "partners"]
|
|
1074
|
+
).ask()
|
|
1075
|
+
partners = "None"
|
|
1076
|
+
if node_type == "partners":
|
|
1077
|
+
prompt_msg = (
|
|
1078
|
+
"Enter the list of partners who can view this Node.\n"
|
|
1079
|
+
"Format: partner::cell, partner::cell, partner::cell\n"
|
|
1080
|
+
"Press Enter to leave the list unchanged"
|
|
1081
|
+
)
|
|
1082
|
+
partners = click.prompt(
|
|
1083
|
+
prompt_msg,
|
|
1084
|
+
default="None",
|
|
1085
|
+
show_default=False
|
|
1086
|
+
).strip()
|
|
1087
|
+
descr = click.prompt(
|
|
1088
|
+
"Update Node description: Type up to 25 characters, or press Enter to leave it unchanged",
|
|
1089
|
+
default="None",
|
|
1090
|
+
show_default=False
|
|
1091
|
+
).strip()
|
|
1092
|
+
if descr and len(descr) > 25:
|
|
1093
|
+
click.echo("Description too long. Max 25 characters allowed.")
|
|
1094
|
+
return
|
|
1095
|
+
asyncio.run(async_update_node_at_start(node_type, descr, partners))
|
|
1096
|
+
|
|
1097
|
+
async def async_update_node_at_start(node_type: str, descr: str, partners:str) -> None:
|
|
1098
|
+
env_data = {}
|
|
1099
|
+
|
|
1100
|
+
try:
|
|
1101
|
+
with open(".env", "r") as f:
|
|
1102
|
+
for line in f:
|
|
1103
|
+
key, value = line.strip().split("=")
|
|
1104
|
+
env_data[key] = value
|
|
1105
|
+
|
|
1106
|
+
nodeID = env_data.get("NODE", "")
|
|
1107
|
+
host = env_data.get("HOST", "")
|
|
1108
|
+
password = env_data.get("PASSWORD", "")
|
|
1109
|
+
network = env_data.get("NETWORK", "")
|
|
1110
|
+
synapse = env_data.get("SYNAPSE", "")
|
|
1111
|
+
|
|
1112
|
+
except FileNotFoundError:
|
|
1113
|
+
click.echo("Error: .env with credentials not found")
|
|
1114
|
+
return
|
|
1115
|
+
except Exception as e:
|
|
1116
|
+
click.echo(f"Error reading .env file: {e}")
|
|
1117
|
+
return
|
|
1118
|
+
|
|
1119
|
+
try:
|
|
1120
|
+
with open("NODE.md", "r") as f:
|
|
1121
|
+
nodemd_file = f.read()
|
|
1122
|
+
|
|
1123
|
+
with open("config.json", "r") as f:
|
|
1124
|
+
config_file = f.read()
|
|
1125
|
+
|
|
1126
|
+
except FileNotFoundError:
|
|
1127
|
+
click.echo("Error: NODE.md file not found")
|
|
1128
|
+
return
|
|
1129
|
+
except Exception as e:
|
|
1130
|
+
click.echo(f"Error reading NODE.md file: {e}")
|
|
1131
|
+
return
|
|
1132
|
+
|
|
1133
|
+
if node_type == "partners":
|
|
1134
|
+
node_type = partners
|
|
1135
|
+
|
|
1136
|
+
url = f"https://{network}/api/update_node"
|
|
1137
|
+
node = {
|
|
1138
|
+
"nodeID": nodeID,
|
|
1139
|
+
"host": host,
|
|
1140
|
+
"password": password,
|
|
1141
|
+
"synapse": synapse,
|
|
1142
|
+
"node_type": node_type,
|
|
1143
|
+
"nodemd_file": nodemd_file,
|
|
1144
|
+
"config_file": config_file,
|
|
1145
|
+
"descr": descr,
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
async with aiohttp.ClientSession() as session:
|
|
1149
|
+
try:
|
|
1150
|
+
async with session.post(url, json=node) as response:
|
|
1151
|
+
response.raise_for_status()
|
|
1152
|
+
data = await response.json()
|
|
1153
|
+
nodeID = data["nodeID"]
|
|
1154
|
+
node_url = data["node_url"]
|
|
1155
|
+
except aiohttp.ClientError as e:
|
|
1156
|
+
click.echo(f"Error sending request: {e}")
|
|
1157
|
+
return
|
|
1158
|
+
|
|
1159
|
+
if node_type == "public":
|
|
1160
|
+
click.echo(f"Neuronum Node '{nodeID}' updated! Visit: {node_url}")
|
|
1161
|
+
else:
|
|
1162
|
+
click.echo(f"Neuronum Node '{nodeID}' updated!")
|
|
1163
|
+
|
|
1164
|
+
|
|
1045
1165
|
@click.command()
|
|
1046
1166
|
def delete_node():
|
|
1047
1167
|
asyncio.run(async_delete_node())
|
|
@@ -1219,6 +1339,7 @@ cli.add_command(view_cell)
|
|
|
1219
1339
|
cli.add_command(disconnect_cell)
|
|
1220
1340
|
cli.add_command(delete_cell)
|
|
1221
1341
|
cli.add_command(init_node)
|
|
1342
|
+
cli.add_command(update_node)
|
|
1222
1343
|
cli.add_command(start_node)
|
|
1223
1344
|
cli.add_command(restart_node)
|
|
1224
1345
|
cli.add_command(stop_node)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|