def app_key_create( self: CommandRunner, name: str, role: str = "", alias_or_addr: str = "", data_dir: str = "", ) -> str: """Run `<cmd> app-key create <name>` with optional extra args. Return the application key parsed from the command's output. """ args = make_args("app-key", "create", name, role=role, id=alias_or_addr, data_dir=data_dir) try: output = self.run_json_command(str, *args) return output except CommandError as ce: if "UNIQUE constraint failed: app_key.name" in str(ce): raise KeyAlreadyExistsError(name) raise ce
def payment_init( self: CommandRunner, sender_mode: bool = False, receiver_mode: bool = False, data_dir: str = "", payment_driver: PaymentDriver = DEFAULT_PAYMENT_DRIVER, address: Optional[str] = None, network: Optional[str] = None, ) -> None: """Run `<cmd> payment init` with optional extra args. Return the command's output. """ args = make_args( "payment", "init", data_dir=data_dir, driver=payment_driver.name, address=address, network=network, ) if sender_mode: args.append("--sender") if receiver_mode: args.append("--receiver") self.run_command(*args)[0]
def id_list(self: CommandRunner, data_dir: str = "") -> Sequence[Identity]: """Return the output of `<yagna-cmd> id list`.""" args = make_args("id", "list", data_dir=data_dir) output = self.run_json_command(Dict, *args) return [ Identity(r["alias"], r["default"] == "X", r["locked"] == "X", r["address"]) for r in parse_json_table(output) ]
def payment_drivers(self: CommandRunner, ) -> Dict[str, Driver]: """Run `<cmd> payment drivers` without any extra args. Parse the command's output as a `Dict[str, Driver]` and return it. """ args = make_args("payment", "drivers") output = self.run_json_command(Dict, *args) return {key: Driver.from_dict(val) for key, val in output.items()}
def payment_status( self: CommandRunner, data_dir: str = "", driver: PaymentDriver = DEFAULT_PAYMENT_DRIVER, ) -> PaymentStatus: """Run `<cmd> payment status` with optional extra args. Parse the command's output as a `PaymentStatus` and return it. """ args = make_args("payment", "status", driver.name, data_dir=data_dir) output = self.run_json_command(Dict, *args) return PaymentStatus.from_dict(output)
def app_key_drop(self: CommandRunner, name: str, address: str = "", data_dir: str = "") -> str: """Run `<cmd> app-key drop <name>` with optional extra args. Return the command's output. """ args = make_args("app-key", "drop", name, id=address, data_dir=data_dir) return self.run_command(*args)[0]
def id_show(self: CommandRunner, data_dir: str = "", alias_or_addr: str = "") -> Optional[Identity]: """Return the output of `<yagna-cmd> id show`.""" args = make_args("id", "show", alias_or_addr, data_dir=data_dir) output = self.run_json_command(Dict, *args) result = unwrap_ok_err_json(output) if result is not None: return Identity( result["alias"], result["isDefault"], result["isLocked"], result["nodeId"], ) return None
def id_update( self: CommandRunner, alias_or_addr: str, data_dir: str = "", set_default: bool = False, ) -> Identity: """Return the output of `<yagna-cmd> id update`.""" set_default_str = "--set-default" if set_default else None args = make_args("id", "update", alias_or_addr, set_default_str, data_dir=data_dir) output = self.run_json_command(Dict, *args) result = unwrap_ok_err_json(output) return Identity(result["alias"], result["isDefault"], result["isLocked"], result["nodeId"])
def app_key_list(self: CommandRunner, address: str = "", data_dir: str = "") -> Sequence[AppKeyInfo]: """Run `<cmd> app-key list` with optional extra args. Return the list of `AppKeyInfo`s parsed from the command's output. """ args = make_args("app-key", "list", id=address, data_dir=data_dir) output = self.run_json_command(Dict, *args) return [ AppKeyInfo( name=info["name"], key=info["key"], address=info["id"], role=info["role"], created=info["created"], ) for info in parse_json_table(output) ]
def id_create(self: CommandRunner, data_dir: str = "", alias: str = "", key_file: str = "") -> Identity: """Run `<yagna-cmd> id create` command.""" args = make_args( "id", "create", "--no-password", alias, **{ "data_dir": data_dir, "from-keystore": key_file }, ) output = self.run_json_command(Dict, *args) result = unwrap_ok_err_json(output) return Identity(result["alias"], result["isDefault"], result["isLocked"], result["nodeId"])
def payment_fund( self: CommandRunner, payment_driver: PaymentDriver = DEFAULT_PAYMENT_DRIVER) -> None: """Run `<cmd> payment fund` with optional extra args.""" args = make_args("payment", "fund", driver=payment_driver.name) self.run_command(*args)