Restructure

Pacakge as a CLI application
This commit is contained in:
up-n-atom
2023-11-17 20:19:48 -05:00
parent 25c10e66e8
commit 12a196c449
11 changed files with 210 additions and 171 deletions
+28
View File
@@ -0,0 +1,28 @@
import asyncclick as click
import re
from sagemcom_api.client import SagemcomClient
from . import xmo
def _validate_mac_address(ctx: click.Context, param: click.Parameter, value: str) -> str:
result = value.upper()
if not re.match(r"([0-9A-F]{2}:){5}[0-9A-F]{2}$", result):
raise click.BadParameter('Invalid MAC address', ctx, param)
return result
@xmo.cli.command()
@click.option('-m', '--mac-address', callback=_validate_mac_address, prompt='MAC Address')
@click.pass_obj
async def enable_advanced_dmz(client: SagemcomClient, mac_address: str) -> None:
try:
await client.set_value_by_xpath('Device/Services/BellNetworkCfg/AdvancedDMZ/Enable', False)
await client.set_value_by_xpath('Device/Services/BellNetworkCfg/AdvancedDMZ/AdvancedDMZhost', mac_address)
await client.set_value_by_xpath('Device/Services/BellNetworkCfg/AdvancedDMZ/Enable', True)
except Exception as e:
click.echo(e, err=True)
raise click.Abort()
@xmo.cli.command()
@click.pass_context
async def disable_advanced_dmz(ctx: click.Context):
await ctx.invoke(set_value, path='Device/Services/BellNetworkCfg/AdvancedDMZ/Enable', value=False)