Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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]
Exemplo n.º 3
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)
        ]
Exemplo n.º 4
0
    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()}
Exemplo n.º 5
0
    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)
Exemplo n.º 6
0
    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]
Exemplo n.º 7
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
Exemplo n.º 8
0
    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"])
Exemplo n.º 9
0
    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)
        ]
Exemplo n.º 10
0
    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"])
Exemplo n.º 11
0
 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)