Support multiple radios in disable wifi radio

This commit is contained in:
up-n-atom
2023-09-13 22:02:33 -04:00
committed by GitHub
parent 55e412e4a5
commit 987edf7103
+12 -8
View File
@@ -133,17 +133,21 @@ async def set_dns_servers(client: SagemcomClient, dns_servers: tuple[IPv4Address
@cli.command()
@click.option('--radio')
@click.option('-r', '--radio', multiple=True)
@click.pass_obj
async def disable_wifi_radio(client: SagemcomClient, radio: str) -> None:
async def disable_wifi_radio(client: SagemcomClient, radio: Any) -> None:
try:
value = await client.get_value_by_xpath('Device/WiFi/Radios')
radios = {radio['Alias'] for radio in value if 'Alias' in radio}
if radio is None:
radio = click.prompt('Choose radio', type=click.Choice(radios), show_choices=True)
elif not radio in radios:
raise click.BadParameter(f"radio {radio} does not exist")
await client.set_value_by_xpath(f"Device/WiFi/Radios/Radio[Alias='{radio}']/Enable", False)
active_radios = {radio['Alias'] for radio in value if 'Alias' in radio and \
'Enable' in radio and radio['Enable']}
if radio is None or not len(radio):
radio = click.prompt('Choose radio', type=click.Choice(active_radios), show_choices=True),
radios = set(radio) - active_radios
if len(radios):
raise click.BadParameter("Invalid radio(s) {0}".format(", ".join(radios)))
radios = set(radio) & active_radios
for alias in radios:
await client.set_value_by_xpath(f"Device/WiFi/Radios/Radio[Alias='{alias}']/Enable", False)
except Exception as e:
click.echo(e, err=True)
raise click.Abort()