Use click nargs for dns servers
This commit is contained in:
+1
-15
@@ -90,22 +90,8 @@ async def get_dns(ctx: click.Context) -> None:
|
|||||||
await ctx.invoke(get_value, path='Device/DNS')
|
await ctx.invoke(get_value, path='Device/DNS')
|
||||||
|
|
||||||
|
|
||||||
def validate_dns_servers(ctx: click.Context, param: str, value: Any) -> tuple[IPv4Address]:
|
|
||||||
if isinstance(value, tuple):
|
|
||||||
return value
|
|
||||||
elif isinstance(value, list):
|
|
||||||
value = " ".join(value)
|
|
||||||
dns_servers = set()
|
|
||||||
for dns_server in value.split(' ', maxsplit=1):
|
|
||||||
try:
|
|
||||||
dns_servers.add(IPv4Address(dns_server))
|
|
||||||
except:
|
|
||||||
raise click.BadParameter(f"Invalid IPv4 address: {dns_server}")
|
|
||||||
return tuple(dns_servers)
|
|
||||||
|
|
||||||
|
|
||||||
@cli.command()
|
@cli.command()
|
||||||
@click.option('--dns-servers', type=click.UNPROCESSED, callback=validate_dns_servers, prompt='DNS servers seperated by a space')
|
@click.option('-s', '--dns-servers', required=True, nargs=2, type=IPv4Address)
|
||||||
@click.pass_obj
|
@click.pass_obj
|
||||||
async def set_dns_servers(client: SagemcomClient, dns_servers: tuple[IPv4Address]) -> None:
|
async def set_dns_servers(client: SagemcomClient, dns_servers: tuple[IPv4Address]) -> None:
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user