|
42 | 42 |
|
43 | 43 | from operate import services
|
44 | 44 | from operate.account.user import UserAccount
|
45 |
| -from operate.constants import KEY, KEYS, OPERATE, SERVICES |
| 45 | +from operate.constants import KEY, KEYS, OPERATE_HOME, SERVICES |
46 | 46 | from operate.ledger.profiles import DEFAULT_NEW_SAFE_FUNDS_AMOUNT
|
47 | 47 | from operate.operate_types import Chain, DeploymentStatus, LedgerType
|
| 48 | +from operate.quickstart.analyse_logs import analyse_logs |
| 49 | +from operate.quickstart.claim_staking_rewards import claim_staking_rewards |
| 50 | +from operate.quickstart.reset_password import reset_password |
| 51 | +from operate.quickstart.reset_staking import reset_staking |
| 52 | +from operate.quickstart.run_service import run_service |
| 53 | +from operate.quickstart.stop_service import stop_service |
| 54 | +from operate.quickstart.terminate_on_chain_service import terminate_service |
48 | 55 | from operate.services.health_checker import HealthChecker
|
49 | 56 | from operate.wallet.master import MasterWalletManager
|
50 | 57 |
|
@@ -75,7 +82,7 @@ def __init__(
|
75 | 82 | ) -> None:
|
76 | 83 | """Initialize object."""
|
77 | 84 | super().__init__()
|
78 |
| - self._path = (home or (Path.cwd() / OPERATE)).resolve() |
| 85 | + self._path = (home or OPERATE_HOME).resolve() |
79 | 86 | self._services = self._path / SERVICES
|
80 | 87 | self._keys = self._path / KEYS
|
81 | 88 | self._master_key = self._path / KEY
|
@@ -936,6 +943,157 @@ def _daemon(
|
936 | 943 | server.run()
|
937 | 944 |
|
938 | 945 |
|
| 946 | +@_operate.command(name="quickstart") |
| 947 | +def qs_start( |
| 948 | + config: Annotated[str, params.String(help="Quickstart config file path")], |
| 949 | + attended: Annotated[ |
| 950 | + str, params.String(help="Run in attended/unattended mode (default: true") |
| 951 | + ] = "true", |
| 952 | +) -> None: |
| 953 | + """Quickstart.""" |
| 954 | + os.environ["ATTENDED"] = attended.lower() |
| 955 | + operate = OperateApp() |
| 956 | + operate.setup() |
| 957 | + run_service(operate=operate, config_path=config) |
| 958 | + |
| 959 | + |
| 960 | +@_operate.command(name="quickstop") |
| 961 | +def qs_stop( |
| 962 | + config: Annotated[str, params.String(help="Quickstart config file path")], |
| 963 | +) -> None: |
| 964 | + """Quickstart.""" |
| 965 | + operate = OperateApp() |
| 966 | + operate.setup() |
| 967 | + stop_service(operate=operate, config_path=config) |
| 968 | + |
| 969 | + |
| 970 | +@_operate.command(name="terminate") |
| 971 | +def qs_terminate( |
| 972 | + config: Annotated[str, params.String(help="Quickstart config file path")], |
| 973 | + attended: Annotated[ |
| 974 | + str, params.String(help="Run in attended/unattended mode (default: true") |
| 975 | + ] = "true", |
| 976 | +) -> None: |
| 977 | + """Terminate service.""" |
| 978 | + os.environ["ATTENDED"] = attended.lower() |
| 979 | + operate = OperateApp() |
| 980 | + operate.setup() |
| 981 | + terminate_service(operate=operate, config_path=config) |
| 982 | + |
| 983 | + |
| 984 | +@_operate.command(name="claim") |
| 985 | +def qs_claim( |
| 986 | + config: Annotated[str, params.String(help="Quickstart config file path")], |
| 987 | + attended: Annotated[ |
| 988 | + str, params.String(help="Run in attended/unattended mode (default: true") |
| 989 | + ] = "true", |
| 990 | +) -> None: |
| 991 | + """Quickclaim staking rewards.""" |
| 992 | + os.environ["ATTENDED"] = attended.lower() |
| 993 | + operate = OperateApp() |
| 994 | + operate.setup() |
| 995 | + claim_staking_rewards(operate=operate, config_path=config) |
| 996 | + |
| 997 | + |
| 998 | +@_operate.command(name="reset-staking") |
| 999 | +def qs_reset_staking( |
| 1000 | + config: Annotated[str, params.String(help="Quickstart config file path")], |
| 1001 | + attended: Annotated[ |
| 1002 | + str, params.String(help="Run in attended/unattended mode (default: true") |
| 1003 | + ] = "true", |
| 1004 | +) -> None: |
| 1005 | + """Reset staking.""" |
| 1006 | + os.environ["ATTENDED"] = attended.lower() |
| 1007 | + operate = OperateApp() |
| 1008 | + operate.setup() |
| 1009 | + reset_staking(operate=operate, config_path=config) |
| 1010 | + |
| 1011 | + |
| 1012 | +@_operate.command(name="reset-password") |
| 1013 | +def qs_reset_password( |
| 1014 | + attended: Annotated[ |
| 1015 | + str, params.String(help="Run in attended/unattended mode (default: true") |
| 1016 | + ] = "true", |
| 1017 | +) -> None: |
| 1018 | + """Reset password.""" |
| 1019 | + os.environ["ATTENDED"] = attended.lower() |
| 1020 | + operate = OperateApp() |
| 1021 | + operate.setup() |
| 1022 | + reset_password(operate=operate) |
| 1023 | + |
| 1024 | + |
| 1025 | +@_operate.command(name="analyse-logs") |
| 1026 | +def qs_analyse_logs( # pylint: disable=too-many-arguments |
| 1027 | + config: Annotated[str, params.String(help="Quickstart config file path")], |
| 1028 | + from_dir: Annotated[ |
| 1029 | + str, |
| 1030 | + params.String( |
| 1031 | + help="Path to the logs directory. If not provided, it is auto-detected.", |
| 1032 | + default="", |
| 1033 | + ), |
| 1034 | + ], |
| 1035 | + agent: Annotated[ |
| 1036 | + str, |
| 1037 | + params.String( |
| 1038 | + help="The agent name to analyze (default: 'aea_0').", default="aea_0" |
| 1039 | + ), |
| 1040 | + ], |
| 1041 | + reset_db: Annotated[ |
| 1042 | + bool, |
| 1043 | + params.Boolean( |
| 1044 | + help="Use this flag to disable resetting the log database.", default=False |
| 1045 | + ), |
| 1046 | + ], |
| 1047 | + start_time: Annotated[ |
| 1048 | + str, |
| 1049 | + params.String(help="Start time in `YYYY-MM-DD H:M:S,MS` format.", default=""), |
| 1050 | + ], |
| 1051 | + end_time: Annotated[ |
| 1052 | + str, params.String(help="End time in `YYYY-MM-DD H:M:S,MS` format.", default="") |
| 1053 | + ], |
| 1054 | + log_level: Annotated[ |
| 1055 | + str, |
| 1056 | + params.String( |
| 1057 | + help="Logging level. (INFO, DEBUG, WARNING, ERROR, CRITICAL)", |
| 1058 | + default="INFO", |
| 1059 | + ), |
| 1060 | + ], |
| 1061 | + period: Annotated[int, params.Integer(help="Period ID.", default="")], |
| 1062 | + round: Annotated[ # pylint: disable=redefined-builtin |
| 1063 | + str, params.String(help="Round name.", default="") |
| 1064 | + ], |
| 1065 | + behaviour: Annotated[str, params.String(help="Behaviour name filter.", default="")], |
| 1066 | + fsm: Annotated[ |
| 1067 | + bool, params.Boolean(help="Print only the FSM execution path.", default=False) |
| 1068 | + ], |
| 1069 | + include_regex: Annotated[ |
| 1070 | + str, params.String(help="Regex pattern to include in the result.", default="") |
| 1071 | + ], |
| 1072 | + exclude_regex: Annotated[ |
| 1073 | + str, params.String(help="Regex pattern to exclude from the result.", default="") |
| 1074 | + ], |
| 1075 | +) -> None: |
| 1076 | + """Analyse the logs of an agent.""" |
| 1077 | + operate = OperateApp() |
| 1078 | + operate.setup() |
| 1079 | + analyse_logs( |
| 1080 | + operate=operate, |
| 1081 | + config_path=config, |
| 1082 | + from_dir=from_dir, |
| 1083 | + agent=agent, |
| 1084 | + reset_db=reset_db, |
| 1085 | + start_time=start_time, |
| 1086 | + end_time=end_time, |
| 1087 | + log_level=log_level, |
| 1088 | + period=period, |
| 1089 | + round=round, |
| 1090 | + behaviour=behaviour, |
| 1091 | + fsm=fsm, |
| 1092 | + include_regex=include_regex, |
| 1093 | + exclude_regex=exclude_regex, |
| 1094 | + ) |
| 1095 | + |
| 1096 | + |
939 | 1097 | def main() -> None:
|
940 | 1098 | """CLI entry point."""
|
941 | 1099 | run(cli=_operate)
|
|
0 commit comments