29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
import asyncclick as click
|
|
from sagemcom_api.client import SagemcomClient
|
|
from . import xmo
|
|
|
|
|
|
@xmo.cli.command()
|
|
@click.option('-r', '--radios', multiple=True)
|
|
@click.pass_obj
|
|
async def disable_wifi_radios(client: SagemcomClient, radios: tuple[str] | list[str]) -> None:
|
|
try:
|
|
_radios = await client.get_value_by_xpath('Device/WiFi/Radios')
|
|
active_radios = {radio['alias'] for radio in _radios \
|
|
if radio.keys() >= {'alias', 'enable'} and \
|
|
radio['enable']}
|
|
if not active_radios:
|
|
click.echo('No active radios')
|
|
return
|
|
if not radios:
|
|
radios = click.prompt('Choose radio', type=click.Choice(active_radios), show_choices=True),
|
|
invalid_radios = set(radios) - active_radios
|
|
if invalid_radios:
|
|
raise click.BadParameter("Invalid radio(s): {0}".format(", ".join(invalid_radios)))
|
|
disable_radios = set(radios) & active_radios
|
|
for alias in disable_radios:
|
|
await client.set_value_by_xpath(f"Device/WiFi/Radios/Radio[Alias='{alias}']/Enable", False)
|
|
except Exception as e:
|
|
ctx.fail(e)
|
|
|