centralcli
Advanced tools
@@ -184,3 +184,2 @@ import csv | ||
| # FIXME | ||
@@ -198,2 +197,3 @@ async def get_config_status(self, serial: str) -> Response: # pragma: no cover | ||
| class CaasAPI(BuildCLI): | ||
@@ -200,0 +200,0 @@ def __init__(self, data: dict = None, *, file: Path = None) -> None: |
@@ -12,2 +12,3 @@ from __future__ import annotations | ||
| class AiOpsAPI: | ||
@@ -44,3 +45,3 @@ def __init__(self, session: Session): | ||
| """ | ||
| from_time = from_time or datetime.fromtimestamp(datetime.now(tz=timezone.utc).timestamp() - 10800) # Now - 3 hours (UTC) | ||
| from_time = from_time or datetime.fromtimestamp(datetime.now(tz=timezone.utc).timestamp() - 10800) # Now - 3 hours (UTC) | ||
| from_time, to_time = utils.parse_time_options(from_time, to_time, in_milliseconds=True) | ||
@@ -83,3 +84,3 @@ if serial: | ||
| """ | ||
| from_time = from_time or datetime.fromtimestamp(datetime.now(tz=timezone.utc).timestamp() - 10800) # Now - 3 hours (UTC) | ||
| from_time = from_time or datetime.fromtimestamp(datetime.now(tz=timezone.utc).timestamp() - 10800) # Now - 3 hours (UTC) | ||
| from_time, to_time = utils.parse_time_options(from_time, to_time, in_milliseconds=True) | ||
@@ -86,0 +87,0 @@ url = f"/aiops/v2/insights/global/id/{insight_id}/export" |
@@ -63,3 +63,2 @@ from __future__ import annotations | ||
| async def get_site_details( | ||
@@ -269,3 +268,2 @@ self, | ||
| site_address = {"address": address, "city": city, "state": state, "country": country, "zipcode": zipcode} | ||
@@ -272,0 +270,0 @@ geolocation = {"latitude": latitude, "longitude": longitude} |
@@ -18,2 +18,3 @@ from __future__ import annotations | ||
| @overload | ||
@@ -327,3 +328,2 @@ def parse_time_window(time_window: CloudAuthTimeWindow | TimeRange) -> str: ... # pragma: no cover | ||
| async def get_authentications( | ||
@@ -369,3 +369,2 @@ self, | ||
| async def get_sessions( | ||
@@ -372,0 +371,0 @@ self, |
@@ -14,2 +14,3 @@ from __future__ import annotations | ||
| class DeviceManagementAPI: | ||
@@ -16,0 +17,0 @@ def __init__(self, session: Session): |
@@ -12,2 +12,3 @@ from __future__ import annotations | ||
| class FirmwareAPI: | ||
@@ -17,3 +18,2 @@ def __init__(self, session: Session): | ||
| async def get_firmware_version_list( | ||
@@ -231,3 +231,2 @@ self, | ||
| json_data = { | ||
@@ -319,3 +318,2 @@ 'device_type': device_type, | ||
| async def get_swarm_firmware_details( | ||
@@ -322,0 +320,0 @@ self, |
@@ -11,2 +11,3 @@ from __future__ import annotations | ||
| class GuestAPI: | ||
@@ -110,3 +111,2 @@ def __init__(self, session: Session): | ||
| async def add_guest( | ||
@@ -113,0 +113,0 @@ self, |
@@ -10,2 +10,3 @@ # pragma: exclude file Excluding for now as these functions are not used | ||
| class KmsAPI: | ||
@@ -12,0 +13,0 @@ def __init__(self, session: Session): |
@@ -153,3 +153,3 @@ from __future__ import annotations | ||
| client_type = "wireless" | ||
| if [v for v in wired_only_params.values() if v is not None]: | ||
| if [v for v in wired_only_params.values() if v is not None]: | ||
| if client_type and client_type != "wired": | ||
@@ -265,3 +265,2 @@ raise ValueError(f"Invalid combination of filters. WIRED only filter provided which conflicts with client type {client_type}") | ||
| async def get_wireless_clients( | ||
@@ -558,3 +557,3 @@ self, | ||
| 'cluster_id': cluster_id, | ||
| 'calculate_total': "True", # For pagination | ||
| 'calculate_total': "True", # For pagination | ||
| 'sort': sort, | ||
@@ -617,3 +616,3 @@ "offset": offset, | ||
| dev_types = ["aps", "switches", "gateways"] if dev_types is None else [constants.lib_to_api(dev_type, "monitoring") for dev_type in dev_types] | ||
| dev_types = ["aps", "switches", "gateways"] if dev_types is None else [constants.lib_to_api(dev_type, "monitoring") for dev_type in dev_types] | ||
@@ -994,3 +993,3 @@ # We always get resource details for switches when cache=True as we need it for the switch_role (standalone/conductor/secondary/member) to store in the cache. | ||
| 'hostname': hostname, | ||
| 'device_type': None if not device_type else constants.lib_to_api(device_type, "event"), | ||
| 'device_type': None if not device_type else constants.lib_to_api(device_type, "event"), | ||
| 'sort': sort, | ||
@@ -1172,3 +1171,2 @@ 'site': site, | ||
| async def get_gw_uplinks_details( | ||
@@ -1223,3 +1221,2 @@ self, | ||
| params = { | ||
@@ -1226,0 +1223,0 @@ 'uplink_id': uplink_id, |
@@ -82,4 +82,2 @@ from __future__ import annotations | ||
| async def get_branch_health( | ||
@@ -119,4 +117,2 @@ self, | ||
| async def validate_wss_key( | ||
@@ -123,0 +119,0 @@ self, |
@@ -15,2 +15,3 @@ from __future__ import annotations | ||
| class PlatformAPI: | ||
@@ -17,0 +18,0 @@ def __init__(self, session: Session): |
@@ -14,2 +14,3 @@ from __future__ import annotations | ||
| class RapidsAPI: | ||
@@ -16,0 +17,0 @@ def __init__(self, session: Session): |
@@ -11,2 +11,3 @@ from __future__ import annotations | ||
| class TroubleShootingAPI: | ||
@@ -36,3 +37,2 @@ def __init__(self, session: Session): | ||
| async def start_ts_session( | ||
@@ -39,0 +39,0 @@ self, |
@@ -219,4 +219,2 @@ #!/usr/bin/env python3 | ||
| @app.command() | ||
@@ -396,2 +394,4 @@ def reboot( | ||
| """ # pragma: no cover | ||
| @app.command(help=start_help, short_help="Start WebHook Proxy", hidden=not hook_enabled) | ||
@@ -413,2 +413,3 @@ def start( | ||
| yes = True if yes else False | ||
| def terminate_process(pid): | ||
@@ -473,2 +474,3 @@ p = psutil.Process(pid) | ||
| svc = "wh_proxy" if what == "hook-proxy" else "wh2snow" | ||
| def terminate_process(pid): | ||
@@ -520,2 +522,3 @@ with render.Spinner("Terminating Webhook Proxy..."): | ||
| @app.command() | ||
@@ -547,3 +550,2 @@ def archive( | ||
| render.econsole.print(_msg, _emsg, sep="\n", emoji=False) | ||
@@ -559,3 +561,2 @@ render.confirm(yes) | ||
| @app.command() | ||
@@ -647,2 +648,3 @@ def unarchive( | ||
| @app.command(hidden=True) | ||
@@ -750,3 +752,2 @@ def renew_license( | ||
| log.debugv(f'[cyan]cencli[/] called with Arguments: {" ".join(sys.argv[1:])}') | ||
@@ -753,0 +754,0 @@ |
@@ -104,3 +104,3 @@ from __future__ import annotations | ||
| self.config = config or cfg if workspace_name is None else Config(workspace=workspace_name) | ||
| self.workspace_name = workspace_name or self.config.workspace # only used for refresh of tokens in multiple workspaces | ||
| self.workspace_name = workspace_name or self.config.workspace # only used for refresh of tokens in multiple workspaces | ||
| self._aio_session = aio_session | ||
@@ -131,3 +131,3 @@ self.ssl = self.config.ssl_verify | ||
| else: | ||
| cls.glp_requests += utils.listify(requests) | ||
| cls.glp_requests += utils.listify(requests) | ||
@@ -271,3 +271,3 @@ def get_glp_conn_from_file(self) -> NewCentralBase: | ||
| _url = URL(url).with_query(params) | ||
| _data_msg = ' ' if not url else f' {escape(f"[{_url.path}]")}' # Need to cancel [ or rich will eval it as a closing markup | ||
| _data_msg = ' ' if not url else f' {escape(f"[{_url.path}]")}' # Need to cancel [ or rich will eval it as a closing markup | ||
| end_name = _url.name if _url.name not in ["aps", "gateways", "switches"] else lib_to_api(_url.name) | ||
@@ -366,6 +366,6 @@ if self.config.dev.sanitize and utils.is_serial(end_name): # pragma: no cover | ||
| if resp.status == 401: | ||
| spin_txt_retry = "(retry after token refresh)" | ||
| spin_txt_retry = "(retry after token refresh)" | ||
| self.refresh_token() | ||
| elif "errorCode" in resp.raw and "HPE_GL_ERROR" in resp.raw["errorCode"] and "signature has expired" in resp.raw.get("message", "").lower(): | ||
| spin_txt_retry = "(retry after token refresh)" | ||
| spin_txt_retry = "(retry after token refresh)" | ||
| if hasattr(self.auth, "handle_expired_token"): | ||
@@ -521,3 +521,2 @@ self.auth.handle_expired_token() | ||
| # On 1st call determine if remaining calls can be made in batch | ||
@@ -558,3 +557,2 @@ # total is provided for some calls with the total # of records available | ||
| batch_res: List[Response] = await self._batch_request(_reqs) | ||
@@ -609,3 +607,3 @@ failures: List[Response] = [r for r in batch_res if not r.ok] # A failure means both the original attempt and the retry failed. | ||
| if not url.path.startswith("/topology_external_api/vlans"): # API-FLAW vlan endpoint total never matches the # of VLANs. This is a bug | ||
| if not count and not failures and isinstance(r.raw, dict) and "total" in r.raw and isinstance(r.output, list) and len(r.output) < r.raw["total"]: # pragma: no cover | ||
| if not count and not failures and isinstance(r.raw, dict) and "total" in r.raw and isinstance(r.output, list) and len(r.output) < r.raw["total"]: # pragma: no cover | ||
| log.warning(f"[{r.method}]{r.url.path} Total records {len(r.output)} != the total field ({r.raw['total']}) in raw response", show=True, caption=True, log=True) | ||
@@ -775,3 +773,3 @@ except Exception: | ||
| if (not self.is_cnx and self.requests) or (self.is_cnx and self.glp_requests): # a call has been made no need to verify first call (token refresh) | ||
| if (not self.is_cnx and self.requests) or (self.is_cnx and self.glp_requests): # a call has been made no need to verify first call (token refresh) | ||
| chunked_calls = utils.chunker(api_calls, max_calls_per_chunk) | ||
@@ -778,0 +776,0 @@ else: |
@@ -26,2 +26,3 @@ # -*- coding: utf-8 -*- | ||
| class CLIArgs: | ||
@@ -189,4 +190,4 @@ def __init__(self, cache: Cache): | ||
| self.site_many: OptionInfo = typer.Option(None, help="Filter by Site(s)", metavar=iden_meta.site_many, autocompletion=cache.site_completion, show_default=False,) | ||
| self.label: OptionInfo = typer.Option(None, help="Filter by Label", metavar=iden_meta.label, autocompletion=cache.label_completion,show_default=False,) | ||
| self.label_many: OptionInfo = typer.Option(None, help="Filter by Label(s)", metavar=iden_meta.label_many, autocompletion=cache.label_completion,show_default=False,) | ||
| self.label: OptionInfo = typer.Option(None, help="Filter by Label", metavar=iden_meta.label, autocompletion=cache.label_completion, show_default=False,) | ||
| self.label_many: OptionInfo = typer.Option(None, help="Filter by Label(s)", metavar=iden_meta.label_many, autocompletion=cache.label_completion, show_default=False,) | ||
| self.debug: OptionInfo = typer.Option(False, "--debug", envvar=env_var.debug, help="Enable Additional Debug Logging", rich_help_panel="Common Options",) | ||
@@ -230,3 +231,3 @@ self.debugv: OptionInfo = typer.Option(False, "--debugv", help="Enable Verbose Debug Logging", rich_help_panel="Common Options",) | ||
| self.device: OptionInfo = typer.Option(None, "--dev", metavar=iden_meta.dev, help="Filter by device", autocompletion=cache.dev_completion, show_default=False,) | ||
| self.device_type: OptionInfo = typer.Option(None, "--dev-type",help="Filter by Device Type",show_default=False,) | ||
| self.device_type: OptionInfo = typer.Option(None, "--dev-type", help="Filter by Device Type", show_default=False,) | ||
| self.swarm_device: OptionInfo = typer.Option(None, "-S", "--swarm", metavar=iden_meta.dev, help="Filter by the swarm associated with specified AOS8 IAP", autocompletion=cache.dev_ap_completion, show_default=False,) | ||
@@ -287,3 +288,2 @@ self.swarm: OptionInfo = typer.Option(False, "-S", "--swarm", help="Filter by the swarm associated with the ap specified. [dim italic](device/AP Argument must be provided)[/]", autocompletion=cache.dev_ap_completion, show_default=False,) | ||
| @property | ||
@@ -350,3 +350,3 @@ def start(self) -> OptionInfo: | ||
| show_default: bool | str = UNSET, | ||
| prompt: bool |str = UNSET, | ||
| prompt: bool | str = UNSET, | ||
| confirmation_prompt: bool = UNSET, | ||
@@ -457,3 +457,2 @@ prompt_required: bool = UNSET, | ||
| def __call__(self, timerange: str, include_mins: bool = None): | ||
@@ -460,0 +459,0 @@ self.timerange = timerange |
@@ -48,2 +48,3 @@ #!/usr/bin/env python3 | ||
| err_console = Console(stderr=True) | ||
@@ -162,2 +163,3 @@ | ||
| @app.command() | ||
@@ -248,3 +250,2 @@ def group( | ||
| econsole.print(f"{_msg}") | ||
@@ -270,3 +271,3 @@ | ||
| # prep data for cache | ||
| data={ | ||
| data = { | ||
| 'name': group, | ||
@@ -335,6 +336,5 @@ "allowed_types": allowed_types, | ||
| @app.command() | ||
| def site( | ||
| site_name: str = typer.Argument(... , show_default=False,), | ||
| site_name: str = typer.Argument(..., show_default=False,), | ||
| address: str = typer.Argument(None, help="street address, (enclose in quotes)", show_default=False,), | ||
@@ -397,3 +397,2 @@ city: str = typer.Argument(None, show_default=False,), | ||
| # TODO label can't match any existing label names OR site names. Add pre-check via cache / cache-update if label already exists with that name ... then error if cache_update confirms it's accurate | ||
@@ -504,3 +503,3 @@ @app.command() | ||
| econsole.print(f" {k}: [cyan]{v}[/]") for k, v in kwargs.items() | ||
| if k not in ["passphrase", "cert_data"] | ||
| if k not in ["passphrase", "cert_data"] | ||
| ] | ||
@@ -586,2 +585,3 @@ render.confirm(yes) | ||
| def _get_variable_file(var_file: Path) -> dict[str, dict[str, str]]: | ||
@@ -636,3 +636,3 @@ var_data = config.get_file_data(var_file) | ||
| name: str = typer.Argument(..., show_default=False,), | ||
| password: str = typer.Option(None, help="Should generally be provided, wrap in single quotes", show_default=False,), # hide_input=True, prompt=True, confirmation_prompt=True), | ||
| password: str = typer.Option(None, help="Should generally be provided, wrap in single quotes", show_default=False,), # hide_input=True, prompt=True, confirmation_prompt=True), | ||
| company: str = typer.Option(None, help="Company Name", show_default=False,), | ||
@@ -701,3 +701,3 @@ phone: str = typer.Option(None, help="Phone # of guest; Format: +[CountryCode][PhoneNumber]", show_default=False,), | ||
| role: str = typer.Option(..., help="The user role to associate with devices using this PSK", show_default=False,), | ||
| psk: str = typer.Option(None, help=":warning: This currently has no impact, PSK is always randomly generated.", show_default=False, hidden=True,), | ||
| psk: str = typer.Option(None, help=":warning: This currently has no impact, PSK is always randomly generated.", show_default=False, hidden=True,), | ||
| # The PSK/Passphrase, [dim italic]Best to wrap in single quotes.[/] {cli.help_block('Generate Random PSK')}", show_default=False,), | ||
@@ -704,0 +704,0 @@ disable: bool = typer.Option(False, "-D", "--disable", is_flag=True, help="Add MPSK Configuration, but set to [red]disabled[/]", show_default=False,), |
@@ -112,3 +112,2 @@ #!/usr/bin/env python3 | ||
| @app.command(name="label") | ||
@@ -115,0 +114,0 @@ def label_( |
@@ -276,2 +276,3 @@ from __future__ import annotations | ||
| @app.callback() | ||
@@ -278,0 +279,0 @@ def callback(): |
@@ -112,2 +112,3 @@ #!/usr/bin/env python3 | ||
| # TODO use get_topo_for_site similar to show aps -n single call can get neigbor detail for all aps | ||
@@ -134,3 +135,2 @@ def _get_lldp_dict(ap_dict: dict[str, dict[str, Any]]) -> dict: # pragma: no cover requires tty | ||
| # Any APs that lack a site or lack upstream device info from topo API ... need to fetch neighbor per AP | ||
@@ -159,2 +159,3 @@ lldp_reqs = [br(api.topo.get_ap_lldp_neighbor, serial) for serial in ap_dict if serial not in out] | ||
| def get_lldp_names(fstr: str, default_only: bool = False, lower: bool = False, space: str = None, **kwargs) -> list[dict[str, str]]: # pragma: no cover requires tty | ||
@@ -216,3 +217,2 @@ need_lldp = False if "%h" not in fstr and "%p" not in fstr else True | ||
| print(_warn) | ||
@@ -339,3 +339,2 @@ if resp.rl.remain_day < num_calls: | ||
| # TODO finish extraction of uplink commands from commands sent to gw | ||
@@ -345,3 +344,3 @@ # so they can be sent in 2nd request as gw always errors interface doesn't | ||
| def _extract_uplink_commands(commands: list[str]) -> tuple[list[str], list[str]]: # pragma: no cover | ||
| _start=None | ||
| _start = None | ||
| uplk_cmds = [] | ||
@@ -379,3 +378,2 @@ for idx, c in enumerate(commands): | ||
| @app.command() | ||
@@ -459,3 +457,3 @@ def verify( | ||
| _pfx = "" if _pfx in str(validation[s]) else _pfx | ||
| if file_by_serial[s].get("subscription", "null") != (central_by_serial[s]["subscription"] or "null"): # .replace("-", "_").replace(" ", "_") | ||
| if file_by_serial[s].get("subscription", "null") != (central_by_serial[s]["subscription"] or "null"): # .replace("-", "_").replace(" ", "_") | ||
| validation[s] += [f"[cyan]Subscription[/]: {_pfx}[bright_red]{file_by_serial[s].get('subscription', 'null')}[/] from import != [bright_green]{central_by_serial[s]['subscription'] or 'No Subscription Assigned'}[/] reflected in Central."] | ||
@@ -518,2 +516,3 @@ elif validation[s]: # Only show positive valid results here if the device failed other items. | ||
| @app.command(short_help="Batch Deploy groups, sites, devices... from file", hidden=True) | ||
@@ -669,3 +668,3 @@ def deploy( | ||
| @app.command() #TOGLP Need GLP version | ||
| @app.command() # TOGLP Need GLP version | ||
| def unsubscribe( | ||
@@ -818,3 +817,2 @@ import_file: Path = common.arguments.import_file, | ||
| render.display_results(resp, tablefmt="action") | ||
@@ -824,3 +822,3 @@ # update dev cache | ||
| cache_data = [common.cache.get_dev_identifier(r.output) for r in resp if r.ok and r.status != 299] # responds with str serial number | ||
| cache_data = [{**dev, "name": data[dev["serial"]]["hostname"]} for dev in cache_data] # 299 is default, indicates no call was performed, this is returned when the current data matches what's already set for the dev | ||
| cache_data = [{**dev, "name": data[dev["serial"]]["hostname"]} for dev in cache_data] # 299 is default, indicates no call was performed, this is returned when the current data matches what's already set for the dev | ||
| api.session.request(common.cache.update_dev_db, data=cache_data) | ||
@@ -868,3 +866,3 @@ | ||
| import_file = [f for f in import_file if not str(f).startswith("device")] # allow unnecessary 'devices' sub-command | ||
| import_file = [f for f in import_file if not str(f).startswith("device")] # allow unnecessary 'devices' sub-command | ||
@@ -871,0 +869,0 @@ if not import_file: |
@@ -206,2 +206,3 @@ from __future__ import annotations | ||
| @app.callback() | ||
@@ -208,0 +209,0 @@ def callback(): |
@@ -43,3 +43,2 @@ #!/usr/bin/env python3 | ||
| data = common._get_import_file(import_file, "devices") | ||
@@ -158,2 +157,3 @@ | ||
| @app.command() | ||
@@ -160,0 +160,0 @@ def variables( |
@@ -73,3 +73,2 @@ #!/usr/bin/env python3 | ||
| # FIXME | ||
@@ -145,4 +144,2 @@ @app.command(hidden=True) | ||
| @app.command("batch") | ||
@@ -359,2 +356,3 @@ def caas_batch( | ||
| @app.callback() | ||
@@ -361,0 +359,0 @@ def callback(): |
@@ -15,2 +15,3 @@ #!/usr/bin/env python3 | ||
| @app.command() | ||
@@ -17,0 +18,0 @@ def upgrade( |
@@ -48,3 +48,2 @@ #!/usr/bin/env python3 | ||
| @app.callback() | ||
@@ -51,0 +50,0 @@ def callback(): |
@@ -45,3 +45,3 @@ #!/usr/bin/env python3 | ||
| raise typer.Exit(1) | ||
| elif len(var_file) > 1: | ||
| elif len(var_file) > 1: | ||
| common.exit(f"Too many matches, found [cyan]{len(var_file)}[/] files with base-name [cyan]{template.stem}[/].") | ||
@@ -93,2 +93,4 @@ else: | ||
| callback_str = f"Convert j2 Templates{'' if not config.is_old_cfg else ' or convert the cencli config to CFG_VERSION: 2'}" | ||
| @app.callback(help=callback_str) | ||
@@ -95,0 +97,0 @@ def callback(): |
@@ -26,2 +26,3 @@ #!/usr/bin/env python3 | ||
| @app.command() | ||
@@ -117,3 +118,2 @@ def cert( | ||
| @app.command() | ||
@@ -296,3 +296,2 @@ def group( | ||
| @app.callback() | ||
@@ -299,0 +298,0 @@ def callback(): |
@@ -13,2 +13,3 @@ #!/usr/bin/env python3 | ||
| @app.command() | ||
@@ -15,0 +16,0 @@ def compliance( |
@@ -285,3 +285,2 @@ #!/usr/bin/env python3 | ||
| console.print(columns) | ||
@@ -399,2 +398,3 @@ | ||
| class CacheArgs(str, Enum): | ||
@@ -407,2 +407,3 @@ devices = "devices" | ||
| @app.command() | ||
@@ -506,3 +507,2 @@ def cache_del( | ||
| for idx, (ws, serial) in enumerate(zip([config.workspace, "kfc", "ge"], ["CNR4LHJ08G", "CNC7J0T11X", "CNGFJ0TJX5"])): | ||
@@ -526,3 +526,2 @@ if idx > 0: | ||
| print(render.render_title(f"Workspace [bright_green]{config.workspace} GLP Cache Inventory refresh test call using serial# {serial}[/]")) | ||
@@ -542,3 +541,2 @@ resp = api_clients.glp.session.request(common.cache.refresh_inv_db, serial_numbers=(serial,)) | ||
| @app.callback(no_args_is_help=True) | ||
@@ -545,0 +543,0 @@ def callback(): |
@@ -121,2 +121,3 @@ #!/usr/bin/env python3 | ||
| def _process_ap_env_requests(aps: list[CacheDevice], reqs: list[BatchRequest], *, outdir: Path, show: bool = False, pager: bool = False) -> BatchResponse: | ||
@@ -162,2 +163,3 @@ ap_env_res = BatchResponse(api.session.batch_request(reqs)) | ||
| @dataclass | ||
@@ -181,2 +183,3 @@ class DeviceConfigRequests: # pragma: no cover | ||
| func = api.configuration.get_ap_config | ||
| def args_getter(device: CacheDevice) -> tuple: | ||
@@ -187,2 +190,3 @@ return (device.swack_id,) | ||
| func = caasapi.show_config | ||
| def args_getter(device: CacheDevice) -> tuple: | ||
@@ -211,3 +215,3 @@ return (device.group, device.mac) | ||
| do_switch: bool = typer.Option(None, "--switch", help="Export both CX and AOS-SW templates. [dim italic](export not available for switch UI group config)[/]"), | ||
| groups_only: bool = typer.Option(None,"-G", "--groups-only", help="Export Group level configs only, not device level configs."), | ||
| groups_only: bool = typer.Option(None, "-G", "--groups-only", help="Export Group level configs only, not device level configs."), | ||
| ap_env: bool = typer.Option(False, "-e", "--env", help="Export AP environment settings. All ap-env settings are exported to a single file. [italic dim]Valid for APs only, [red]ignored[/] if -G|--groups-only specified[/]", show_default=False,), | ||
@@ -332,2 +336,3 @@ show: bool = typer.Option(False, "-s", "--show", help=f"Display configs to terminal along with exporting to filesystem. {common.help_block('Display only export progress')}"), | ||
| class EvalLocationResponse: | ||
@@ -346,2 +351,3 @@ _responses: list[Response] = [] | ||
| eval_location_response = EvalLocationResponse() | ||
@@ -404,3 +410,2 @@ | ||
| def generate_redsky_csv(ap_data: list[dict[str, str]], *, mask: bool = True, pnc: bool = False) -> list[dict[str, str]]: | ||
@@ -529,8 +534,5 @@ redsky_out = [] | ||
| common.exit(code = 0 if bssid_resp.ok else 1) # any visualrf response failures will lead to exit (eval_location_response) | ||
| common.exit(code=0 if bssid_resp.ok else 1) # any visualrf response failures will lead to exit (eval_location_response) | ||
| @app.callback() | ||
@@ -537,0 +539,0 @@ def callback(): |
@@ -21,3 +21,3 @@ #!/usr/bin/env python3 | ||
| macs = [Mac(ap["mac"] , bssids=True, num_bssids=6) for ap in file_data] | ||
| macs = [Mac(ap["mac"], bssids=True, num_bssids=6) for ap in file_data] | ||
| invalid_macs = [(idx, m) for idx, m in enumerate(macs, start=2) if not m.ok] | ||
@@ -89,2 +89,3 @@ if invalid_macs: | ||
| @app.command() | ||
@@ -91,0 +92,0 @@ def bssids( |
@@ -13,2 +13,3 @@ #!/usr/bin/env python3 | ||
| @app.command() | ||
@@ -78,3 +79,3 @@ def all( | ||
| _clients = [CacheClient(c.model_dump()) for c in Clients(client_resp.output)] | ||
| online_client = [c for c in _clients if c.last_connected] | ||
| online_client = [c for c in _clients if c.last_connected] | ||
| if online_client: | ||
@@ -95,2 +96,3 @@ client = online_client[-1] | ||
| @app.callback() | ||
@@ -97,0 +99,0 @@ def callback(): |
@@ -35,3 +35,3 @@ #!/usr/bin/env python3 | ||
| if to_group: | ||
| out_data = [{**dev, "group": to_group } for dev in out_data] | ||
| out_data = [{**dev, "group": to_group} for dev in out_data] | ||
@@ -144,3 +144,3 @@ timestamp = pendulum.now().format("MMDDYY-HHmmss") | ||
| cache_group = None if not group else common.cache.get_group_identifier(group) | ||
| _not_group = None if not not_group else common.cache.get_group_identifier(not_group) | ||
| _not_group = None if not not_group else common.cache.get_group_identifier(not_group) | ||
| warnings = [""] | ||
@@ -178,3 +178,3 @@ | ||
| devs = utils.format_table(common._get_import_file(migrate_file, "devices"), key_order = ["name", "serial", "mac", "status", "type", "model", "group", "site", "services"]) | ||
| devs = utils.format_table(common._get_import_file(migrate_file, "devices"), key_order=["name", "serial", "mac", "status", "type", "model", "group", "site", "services"]) | ||
| render.console.print(f"Migrat{'ing' if yes else 'e'} the following {len(devs)} device{'s' if len(devs) > 1 else ''} from [cyan]{config.workspace}[/] workspace to [bright_green]{to_workspace}[/] workspace") | ||
@@ -245,3 +245,2 @@ render.console.print(f" {utils.summarize_data(devs).lstrip()}", emoji=False) | ||
| @app.callback() | ||
@@ -248,0 +247,0 @@ def callback(): |
@@ -71,2 +71,3 @@ #!/usr/bin/env python3 | ||
| @app.command() | ||
@@ -115,3 +116,4 @@ def cache( | ||
| if __name__ == "__main__": | ||
| app() |
@@ -140,3 +140,3 @@ #!/usr/bin/env python3 | ||
| cache_update_func=common.cache.update_log_db, # cache is not updated if -vv if not verbose else None, | ||
| verbosity = verbose | ||
| verbosity=verbose | ||
| ) | ||
@@ -260,2 +260,3 @@ | ||
| @app.callback() | ||
@@ -262,0 +263,0 @@ def callback(): |
@@ -97,3 +97,2 @@ #!/usr/bin/env python3 | ||
| params = ["serial", "group", "site", "label", "swarm_id", "band", "network"] | ||
@@ -164,3 +163,2 @@ args = [ | ||
| title = f"Bandwidth Usage [cyan]{dev.name}[/]" | ||
@@ -268,3 +266,2 @@ if uplink: | ||
| resp = api.session.request(api.monitoring.get_clients_bandwidth_usage, **kwargs, from_time=start, to_time=end) | ||
@@ -271,0 +268,0 @@ |
@@ -169,2 +169,3 @@ #!/usr/bin/env python3 | ||
| @app.callback() | ||
@@ -171,0 +172,0 @@ def callback(): |
@@ -31,2 +31,4 @@ #!/usr/bin/env python3 | ||
| """ | ||
| @app.command(help=device_help) | ||
@@ -89,2 +91,3 @@ def device( | ||
| swarms_help = f"""Show firmware details for swarms | ||
@@ -94,2 +97,4 @@ | ||
| """ | ||
| @app.command() | ||
@@ -146,3 +151,2 @@ def swarm( | ||
| tablefmt = common.get_format(do_json=do_json, do_yaml=do_yaml, do_csv=do_csv, do_table=do_table) | ||
@@ -214,2 +218,3 @@ | ||
| @app.command("list") | ||
@@ -268,3 +273,2 @@ def _list( | ||
| resp = api.session.request(api.firmware.get_firmware_version_list, **kwargs) | ||
@@ -271,0 +275,0 @@ caption = None if not resp.ok or verbose or len(resp.output) + 7 <= render.console.height else "\u2139 Showing a single screens worth of the most recent versions, to see full list use [cyan]-v[/] (verbose)" |
@@ -77,3 +77,3 @@ #!/usr/bin/env python3 | ||
| title="PSKs" | ||
| title = "PSKs" | ||
| if ssid: | ||
@@ -100,3 +100,2 @@ ssid: CacheMpsk = common.cache.get_mpsk_network_identifier(ssid) | ||
| tablefmt = "csv" if csv_import and ssid else common.get_format(do_json=do_json, do_yaml=do_yaml, do_csv=do_csv, do_table=do_table, default="rich") | ||
@@ -103,0 +102,0 @@ caption = None if not resp.ok else f"{'' if tablefmt == 'rich' else ' '}Total Named MPSKs for [cyan]{'ALL SSIDs' if not ssid else ssid.name}[/]: [bright_green]{_mpsk_cnt or len(resp)}[/]{_caption or ''}" |
@@ -157,3 +157,3 @@ #!/usr/bin/env python3 | ||
| resp.output = resp.output["connection"] | ||
| caption=_build_caption(resp) | ||
| caption = _build_caption(resp) | ||
| elif "summary" in resp.output: # For Mobility GWs this endpoint only shows Overlay for SD-Branch | ||
@@ -168,3 +168,2 @@ resp.output = resp.output["summary"] | ||
| render.display_results( | ||
@@ -181,2 +180,3 @@ resp, | ||
| @app.callback() | ||
@@ -183,0 +183,0 @@ def callback(): |
@@ -15,3 +15,2 @@ #!/usr/bin/env python3 | ||
| # TODO --clean... wouldn't that accomplish the same as --raw. Verify with --raw output is not processed for formatting | ||
@@ -18,0 +17,0 @@ @app.command() |
@@ -35,3 +35,2 @@ #!/usr/bin/env python3 | ||
| def all_caption(self) -> str: | ||
@@ -48,2 +47,3 @@ caption = "" | ||
| def get_wids_response( | ||
@@ -50,0 +50,0 @@ wids_cat: Literal["rogue", "interfering", "suspect", "all"], |
@@ -203,3 +203,3 @@ #!/usr/bin/env python3 | ||
| debugv: bool = common.options.debugv, | ||
| update_cache = common.options.update_cache, | ||
| update_cache=common.options.update_cache, | ||
| ) -> None: # pragma: no cover | ||
@@ -215,3 +215,3 @@ """This is a hidden test command used for automated testing. | ||
| tablefmt = common.get_format(do_json=do_json, do_yaml=do_yaml, do_csv=do_csv, do_table=do_table) | ||
| resp = api.session.request(api.monitoring.get_aps) # deployment=APDeployment.STANDALONE, status=DeviceStatusFilter.ONLINE, limit=3) | ||
| resp = api.session.request(api.monitoring.get_aps) # deployment=APDeployment.STANDALONE, status=DeviceStatusFilter.ONLINE, limit=3) | ||
| render.display_results(resp, tablefmt=tablefmt, outfile=outfile, pager=pager, sort_by=sort_by, reverse=reverse, output_by_key="deviceName") | ||
@@ -218,0 +218,0 @@ ... |
@@ -61,3 +61,2 @@ #!/usr/bin/env python3 | ||
| if not complete: # pragma: no cover requires tty | ||
@@ -72,2 +71,3 @@ render.econsole.print(f'[dark_orange3]:warning:[/] Central is still waiting on response from [cyan]{device.name}[/]') | ||
| def ts_send_command(device: CacheDevice, cmd: list[str], outfile: Path, pager: bool,) -> None: | ||
@@ -114,2 +114,3 @@ """Helper command to send troubleshooting output (user provides command) and print results | ||
| @app.command() | ||
@@ -161,2 +162,3 @@ def overlay( | ||
| @app.command() | ||
@@ -163,0 +165,0 @@ def clients( |
@@ -22,2 +22,3 @@ #!/usr/bin/env python3 | ||
| @app.command("subscription" if not config.glp.ok else "_subscription", hidden=config.glp.ok, help=sub_help) | ||
@@ -46,3 +47,2 @@ def classic_subscription( | ||
| @app.command("subscription" if config.glp.ok else "_subscription", hidden=not config.glp.ok, help=sub_help) | ||
@@ -49,0 +49,0 @@ def glp_subscription( |
@@ -253,3 +253,3 @@ #!/usr/bin/env python3 | ||
| render.display_results(resp, tablefmt="action") | ||
| #CACHE Needs cache update | ||
| # CACHE Needs cache update | ||
@@ -266,2 +266,4 @@ | ||
| """ | ||
| @app.command("config", help=config_help) | ||
@@ -272,3 +274,3 @@ def config_( | ||
| metavar=iden_meta.group_dev_cencli, | ||
| help = "Device Identifier, Group Name along with --ap or --gw option, or 'self' to update cencli configuration details.", | ||
| help="Device Identifier, Group Name along with --ap or --gw option, or 'self' to update cencli configuration details.", | ||
| autocompletion=common.cache.group_dev_ap_gw_completion | ||
@@ -700,3 +702,2 @@ ), | ||
| @app.command() | ||
@@ -795,3 +796,3 @@ def wlan( | ||
| name: str = typer.Argument(..., show_default=False,), | ||
| password: str = typer.Option(None,), # hide_input=True, prompt=True, confirmation_prompt=True), | ||
| password: str = typer.Option(None,), # hide_input=True, prompt=True, confirmation_prompt=True), | ||
| company: str = typer.Option(None, help="Company Name", show_default=False,), | ||
@@ -798,0 +799,0 @@ phone: str = typer.Option(None, help="Phone # of guest; Format: +[CountryCode][PhoneNumber]", show_default=False,), |
@@ -17,2 +17,3 @@ from __future__ import annotations | ||
| class GreenLakeAPI: | ||
@@ -52,2 +53,3 @@ _by_workspace: dict[str, GreenLakeAPI] = {} | ||
| class CentralAPI: | ||
@@ -54,0 +56,0 @@ _by_workspace: dict[str, CentralAPI] = {} |
@@ -18,2 +18,3 @@ from __future__ import annotations | ||
| class GLPDevice(TypedDict): | ||
@@ -25,2 +26,3 @@ serial: str | ||
| class GreenLakeDevicesAPI: | ||
@@ -75,4 +77,2 @@ def __init__(self, session: Session): | ||
| async def get_devices( | ||
@@ -79,0 +79,0 @@ self, |
@@ -31,3 +31,2 @@ from __future__ import annotations | ||
| params = { | ||
@@ -53,3 +52,2 @@ "filter": query, | ||
| params = { | ||
@@ -83,3 +81,2 @@ "filter": query, | ||
| params = { | ||
@@ -86,0 +83,0 @@ "filter": query, |
@@ -31,3 +31,2 @@ from __future__ import annotations | ||
| params = { | ||
@@ -34,0 +33,0 @@ "filter": query, |
@@ -49,2 +49,3 @@ # (C) Copyright 2025 Hewlett Packard Enterprise Development LP. | ||
| urls = NewCentralURLs() # currently only using Authentication url | ||
@@ -67,3 +68,2 @@ | ||
| class NewCentralBase: | ||
@@ -97,3 +97,2 @@ def __init__(self, token_info: Path | str | dict[str, dict[str, str]]): | ||
| # for app in self.token_info: | ||
@@ -134,3 +133,2 @@ # self.token_info[app]["access_token"] = self.token_info.get("access_token") or access_token | ||
| def load_token_from_cache(self) -> str | None: | ||
@@ -144,7 +142,6 @@ if config.cnx_tok_file and config.cnx_tok_file.exists(): | ||
| if pendulum.now().int_timestamp - 300 > token_data["expires"]: | ||
| return # if cached token is within 5 mins of expiration we want to force a refresh | ||
| return # if cached token is within 5 mins of expiration we want to force a refresh | ||
| return token_data.get("access_token") | ||
| def get_access_token(self, app_name: Literal["new_central", "glp"] = "glp") -> str: | ||
@@ -172,3 +169,2 @@ """ | ||
| try: | ||
@@ -175,0 +171,0 @@ log.info(f"Attempting to create new token from {app_name}") |
@@ -80,3 +80,2 @@ from __future__ import annotations | ||
| @staticmethod | ||
@@ -139,3 +138,2 @@ def strip_no_value(data: List[dict] | Dict[dict], no_val_strings: List[str] = NO_VAL_STRINGS, aggressive: bool = False,) -> List[dict] | Dict[dict]: | ||
| def simple_kv_formatter( | ||
@@ -142,0 +140,0 @@ self, |
@@ -15,5 +15,7 @@ from __future__ import annotations | ||
| def get_subscriptions(data: List[Dict[str, Any]], verbosity: int = 0) -> List[Dict[str, Any]]: | ||
| if not data: | ||
| return data | ||
| def _to_datetime(date: str, format: TimeFormat = "date-string", format_expiration: bool = None) -> DateTime: | ||
@@ -20,0 +22,0 @@ return DateTime(pendulum.from_format(date.rstrip("Z"), "YYYY-MM-DDTHH:mm:ss.SSS").timestamp(), format=format, format_expiration=format_expiration) |
@@ -114,2 +114,3 @@ from __future__ import annotations | ||
| class Subscriptions(BaseModel): | ||
@@ -178,3 +179,3 @@ items: List[Subscription] | ||
| region: Optional[str] = None | ||
| subscription: list[str] | str| None = None | ||
| subscription: list[str] | str | None = None | ||
| application: str | None = None | ||
@@ -302,3 +303,4 @@ | ||
| async def get_inventory_with_sub_data(inv_data: Inventory, sub_data: Subscriptions) -> list[dict[str, Any]]: | ||
| return [{"id": devid, **dev_data, **sub_data.get_inv_cache_fields(dev_data["subscription"])} for devid, dev_data in inv_data.by_id.items()] |
@@ -103,2 +103,3 @@ from __future__ import annotations | ||
| con = rich_console or econsole | ||
| def abort(): | ||
@@ -134,2 +135,3 @@ con.print("\n[dark_orange3]:warning:[/] [red]Aborted[/]", emoji=True) | ||
| class CentralURLs(Mapping): # pragma: no cover used in first run wizard which requires tty | ||
@@ -469,3 +471,3 @@ def __init__(self): | ||
| # prefer setting at the workspace config level first | ||
| #config format v1 (classic) | ||
| # config format v1 (classic) | ||
| if self.workspace: | ||
@@ -472,0 +474,0 @@ if key in self.data.get(self.workspace, {}): |
@@ -17,3 +17,3 @@ #!/usr/bin/env python3 | ||
| lib_dev_idens = ["ap", "cx", "sw", "switch", "gw", "sdwan"] | ||
| generic_lib_dev_idens = ["ap","gw", "switch", "sdwan"] | ||
| generic_lib_dev_idens = ["ap", "gw", "switch", "sdwan"] | ||
| flex_dual_models = ["615", "605H", "605R"] | ||
@@ -26,3 +26,3 @@ dynamic_antenna_models = ["679"] | ||
| DeviceTypes = Literal["ap", "cx", "sw", "gw", "sdwan"] | ||
| EventDeviceTypes = Literal["ap","gw", "switch", "client"] | ||
| EventDeviceTypes = Literal["ap", "gw", "switch", "client"] | ||
| ClientStatus = Literal["FAILED_TO_CONNECT", "CONNECTED"] | ||
@@ -118,2 +118,3 @@ ClientType = Literal["wired", "wireless", "all"] | ||
| class ClusterName(str, Enum): | ||
@@ -216,2 +217,3 @@ internal = "internal" | ||
| class PoEDetectionStatus(Enum): | ||
@@ -255,2 +257,3 @@ NA = 0 | ||
| # Not used currently # TODO reference in cleaner | ||
@@ -353,2 +356,3 @@ class SwitchRoles(Enum): | ||
| class GatewayRole(str, Enum): | ||
@@ -449,2 +453,3 @@ branch = "branch" | ||
| class DynamicAntMode(str, Enum): | ||
@@ -454,2 +459,3 @@ narrow = "narrow" | ||
| class APIAction(str, Enum): | ||
@@ -460,2 +466,3 @@ ADD = "ADD" | ||
| class RadioMode(str, Enum): | ||
@@ -466,2 +473,3 @@ access = "access" | ||
| class UplinkNames(str, Enum): | ||
@@ -474,2 +482,3 @@ uplink101 = "uplink101" | ||
| # Not used ... for reference | ||
@@ -514,2 +523,3 @@ # class RadioNumber(Enum): | ||
| class CancelWhat(str, Enum): | ||
@@ -1104,2 +1114,3 @@ device = "device" | ||
| class SortDevOptions(str, Enum): | ||
@@ -1163,2 +1174,3 @@ name = "name" | ||
| class SortCertOptions(str, Enum): | ||
@@ -1386,4 +1398,6 @@ name = "name" | ||
| iden_meta = IdenMetaVars() | ||
| class LogSortBy(str, Enum): | ||
@@ -1476,2 +1490,3 @@ time = "time" | ||
| class SiteStates(str, Enum): | ||
@@ -1536,2 +1551,3 @@ AL = Alabama = "Alabama", | ||
| TZDB = Literal[ | ||
@@ -2133,3 +2149,3 @@ "Africa/Abidjan", | ||
| IAP_TZ_NAMES = Literal[ | ||
| IAP_TZ_NAMES = Literal[ | ||
| "none", | ||
@@ -2294,2 +2310,3 @@ "International-Date-Line-West", | ||
| class IAPTimeZoneNames(str, Enum): | ||
@@ -2454,2 +2471,3 @@ none = "none" | ||
| NO_LOAD_COMMANDS = [ | ||
@@ -2456,0 +2474,0 @@ "show config cencli", |
@@ -10,2 +10,3 @@ from os import environ | ||
| env_var = EnvVar() | ||
@@ -60,2 +61,3 @@ classic_env_var = EnvVar("ARUBACLI_ACCOUNT", "ARUBACLI_DEBUG") | ||
| env = Env() |
@@ -5,8 +5,11 @@ # Aruba Central API GW ISSUES | ||
| class DevException(ArubaCentralException): | ||
| pass | ||
| class TimeoutException(ArubaCentralException): | ||
| pass | ||
| # CentralCLI Exceptions | ||
@@ -16,17 +19,23 @@ class CentralCliException(Exception): | ||
| class MissingFieldException(CentralCliException): | ||
| pass | ||
| class MissingRequiredArgumentException(TypeError): | ||
| pass | ||
| class ImportException(CentralCliException): | ||
| pass | ||
| class InvalidConfigException(CentralCliException): | ||
| pass | ||
| class ConfigNotFoundException(CentralCliException): | ||
| pass | ||
| class WorkSpaceNotFoundException(CentralCliException): | ||
@@ -40,6 +49,8 @@ pass | ||
| class RefreshFailedException(ServiceNowException): | ||
| pass | ||
| class IncidentException(ServiceNowException): | ||
| pass |
@@ -39,2 +39,3 @@ from __future__ import annotations | ||
| class MyLogger: | ||
@@ -59,4 +60,4 @@ def __init__(self, log_file: str | Path, debug: bool = False, show: bool = False, verbose: bool = False, deprecation_warnings: str | list[str] = None): | ||
| self.exception = partial(self.log_print, level="exception", exc_info=True) | ||
| self.critical = partial(self.log_print, level="critical") | ||
| self.fatal = partial(self.log_print, level="fatal") | ||
| self.critical = partial(self.log_print, level="critical") | ||
| self.fatal = partial(self.log_print, level="fatal") | ||
@@ -78,3 +79,3 @@ def __getattr__(self, name: str) -> Any: # pragma: no cover Exists only as a convenience when debugging | ||
| handlers=[ | ||
| RotatingFileHandler(self.log_file.absolute(), maxBytes=900_000, backupCount=5,), | ||
| RotatingFileHandler(self.log_file.absolute(), maxBytes=900_000, backupCount=5,), | ||
| ], | ||
@@ -102,6 +103,2 @@ ) | ||
| def follow(self, pytest: bool = False) -> None: # pragma: no cover requires a tty | ||
@@ -108,0 +105,0 @@ """generator function that yields new lines in log file""" |
@@ -120,6 +120,6 @@ from __future__ import annotations | ||
| def cache_dump(self) -> list[dict[str, str | int | bool]]: # currently no adjustments from model_dump. use json.loads(self.model_dump_json()) with customer json serializer if adjustments needed in future. | ||
| return self.model_dump() | ||
| class DeviceStatus(str, Enum): | ||
@@ -476,2 +476,3 @@ Up = "Up" | ||
| class Mpsks(RootModel): | ||
@@ -581,2 +582,3 @@ root: List[Mpsk] | ||
| class Guests(RootModel): | ||
@@ -609,2 +611,3 @@ root: List[Guest] | ||
| class Campus(BaseModel): # pragma: no cover Not currently used or needed in the cache | ||
@@ -614,2 +617,3 @@ id: str = Field(alias=AliasChoices("id", "campus_id")) | ||
| class Building(BaseModel): | ||
@@ -640,2 +644,3 @@ id: str = Field(alias=AliasChoices("id", "building_id")) | ||
| class BuildingResponses(RootModel): | ||
@@ -698,2 +703,3 @@ root: Buildings | ||
| class Floors(RootModel): | ||
@@ -700,0 +706,0 @@ root: list[VisualRFFloor] |
@@ -20,4 +20,6 @@ from __future__ import annotations | ||
| default = Defaults() | ||
| def _ensure_base_urls(data: dict) -> Dict[str, Any]: | ||
@@ -36,2 +38,3 @@ if "cluster" in data and data["cluster"] in CLUSTER_URLS: | ||
| # CNX New Central | ||
@@ -38,0 +41,0 @@ class Glp(BaseModel): |
@@ -113,2 +113,3 @@ from __future__ import annotations | ||
| # MAC Imports for Cloud Auth | ||
@@ -120,2 +121,3 @@ class ImportMAC(BaseModel): | ||
| class ImportMACs(RootModel): | ||
@@ -166,2 +168,3 @@ root: List[ImportMAC] | ||
| class _ImportDevice(BaseModel): | ||
@@ -198,3 +201,3 @@ model_config = ConfigDict(use_enum_values=True, arbitrary_types_allowed=True, ignored_types=(CacheSub,)) | ||
| key, value = i.split(":") | ||
| tags[key] =value | ||
| tags[key] = value | ||
| else: | ||
@@ -205,2 +208,3 @@ tags[i] = "" | ||
| class ImportDevice(_ImportDevice): | ||
@@ -297,2 +301,3 @@ _cache: Cache = PrivateAttr(None) | ||
| class ImportDevices(RootModel): | ||
@@ -355,3 +360,3 @@ root: list[ImportDevice] | ||
| ret = {} | ||
| hash_to_tags = {} | ||
| hash_to_tags = {} | ||
| for dev in self.root: | ||
@@ -373,3 +378,2 @@ if dev.tags: | ||
| def serials_by_subscription_id(self, assigned: bool = None) -> dict[str, BySubId]: | ||
@@ -376,0 +380,0 @@ subs: set[CacheSub] = set(self._cache.get_sub_identifier(dev.subscription, silent=True, best_match=True) for dev in self.root if dev.subscription) |
@@ -7,3 +7,2 @@ from __future__ import annotations | ||
| # WebHook Models WebHookDetails no reliable source for all possible fields. | ||
@@ -10,0 +9,0 @@ class WebHookDetails(BaseModel): |
@@ -86,3 +86,2 @@ """object Classes""" | ||
| @property | ||
@@ -120,3 +119,2 @@ def is_expired(self) -> bool: | ||
| @property | ||
@@ -153,3 +151,3 @@ def day_datetime(self) -> str: | ||
| _words = pendulum.duration(seconds=int(self.ts)).in_words() | ||
| value_pairs = [(int(_words.split()[idx]), _words.split()[idx + 1]) for idx in range(0, len(_words.split()), 2)] | ||
| value_pairs = [(int(_words.split()[idx]), _words.split()[idx + 1]) for idx in range(0, len(_words.split()), 2)] | ||
| words, minute = "", None | ||
@@ -231,2 +229,3 @@ for value, word in value_pairs: | ||
| class ShowInterfaceFilters: | ||
@@ -267,3 +266,3 @@ def __init__(self, up: bool = False, down: bool = False, slow: bool = False, fast: bool = False): | ||
| """ | ||
| valid=True | ||
| valid = True | ||
| if all([self.up, self.down]): | ||
@@ -270,0 +269,0 @@ valid = False |
@@ -25,4 +25,2 @@ # -*- coding: utf-8 -*- | ||
| DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0b\x61udit.proto\x12\x05\x41udit\"\x1b\n\x0bmac_address\x12\x0c\n\x04\x61\x64\x64r\x18\x01 \x01(\x0c\"\x99\x01\n\nip_address\x12)\n\x02\x61\x66\x18\x01 \x01(\x0e\x32\x1d.Audit.ip_address.addr_family\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x01(\x0c\"R\n\x0b\x61\x64\x64r_family\x12\x16\n\x12\x41\x44\x44R_FAMILY_UNSPEC\x10\x00\x12\x14\n\x10\x41\x44\x44R_FAMILY_INET\x10\x01\x12\x15\n\x11\x41\x44\x44R_FAMILY_INET6\x10\x02\"-\n\x06\x63onfig\x12\x0c\n\x04\x64\x61ta\x18\x01 \x02(\t\x12\x15\n\rdetailed_data\x18\x02 \x01(\t\"/\n\x08\x66irmware\x12\x0c\n\x04\x64\x61ta\x18\x01 \x02(\t\x12\x15\n\rdetailed_data\x18\x02 \x01(\t\"8\n\x11\x64\x65vice_management\x12\x0c\n\x04\x64\x61ta\x18\x01 \x02(\t\x12\x15\n\rdetailed_data\x18\x02 \x01(\t\"\xb2\x02\n\raudit_message\x12\x13\n\x0b\x63ustomer_id\x18\x01 \x02(\t\x12\x11\n\ttimestamp\x18\x02 \x02(\r\x12&\n\x07service\x18\x03 \x02(\x0e\x32\x15.Audit.classification\x12\x12\n\ngroup_name\x18\x04 \x02(\t\x12\x0e\n\x06target\x18\x05 \x02(\t\x12$\n\tclient_ip\x18\x06 \x02(\x0b\x32\x11.Audit.ip_address\x12\x10\n\x08username\x18\x07 \x02(\t\x12\"\n\x0b\x63onfig_info\x18\x08 \x01(\x0b\x32\r.Audit.config\x12&\n\rfirmware_info\x18\t \x01(\x0b\x32\x0f.Audit.firmware\x12)\n\x07\x64m_info\x18\x10 \x01(\x0b\x32\x18.Audit.device_management*B\n\x0e\x63lassification\x12\x11\n\rCONFIGURATION\x10\x00\x12\x0c\n\x08\x46IRMWARE\x10\x01\x12\x0f\n\x0b\x44\x45VICE_MGMT\x10\x02') | ||
@@ -35,18 +33,18 @@ | ||
| DESCRIPTOR._loaded_options = None | ||
| _globals['_CLASSIFICATION']._serialized_start=670 | ||
| _globals['_CLASSIFICATION']._serialized_end=736 | ||
| _globals['_MAC_ADDRESS']._serialized_start=22 | ||
| _globals['_MAC_ADDRESS']._serialized_end=49 | ||
| _globals['_IP_ADDRESS']._serialized_start=52 | ||
| _globals['_IP_ADDRESS']._serialized_end=205 | ||
| _globals['_IP_ADDRESS_ADDR_FAMILY']._serialized_start=123 | ||
| _globals['_IP_ADDRESS_ADDR_FAMILY']._serialized_end=205 | ||
| _globals['_CONFIG']._serialized_start=207 | ||
| _globals['_CONFIG']._serialized_end=252 | ||
| _globals['_FIRMWARE']._serialized_start=254 | ||
| _globals['_FIRMWARE']._serialized_end=301 | ||
| _globals['_DEVICE_MANAGEMENT']._serialized_start=303 | ||
| _globals['_DEVICE_MANAGEMENT']._serialized_end=359 | ||
| _globals['_AUDIT_MESSAGE']._serialized_start=362 | ||
| _globals['_AUDIT_MESSAGE']._serialized_end=668 | ||
| _globals['_CLASSIFICATION']._serialized_start = 670 | ||
| _globals['_CLASSIFICATION']._serialized_end = 736 | ||
| _globals['_MAC_ADDRESS']._serialized_start = 22 | ||
| _globals['_MAC_ADDRESS']._serialized_end = 49 | ||
| _globals['_IP_ADDRESS']._serialized_start = 52 | ||
| _globals['_IP_ADDRESS']._serialized_end = 205 | ||
| _globals['_IP_ADDRESS_ADDR_FAMILY']._serialized_start = 123 | ||
| _globals['_IP_ADDRESS_ADDR_FAMILY']._serialized_end = 205 | ||
| _globals['_CONFIG']._serialized_start = 207 | ||
| _globals['_CONFIG']._serialized_end = 252 | ||
| _globals['_FIRMWARE']._serialized_start = 254 | ||
| _globals['_FIRMWARE']._serialized_end = 301 | ||
| _globals['_DEVICE_MANAGEMENT']._serialized_start = 303 | ||
| _globals['_DEVICE_MANAGEMENT']._serialized_end = 359 | ||
| _globals['_AUDIT_MESSAGE']._serialized_start = 362 | ||
| _globals['_AUDIT_MESSAGE']._serialized_end = 668 | ||
| # @@protoc_insertion_point(module_scope) |
@@ -25,4 +25,2 @@ # -*- coding: utf-8 -*- | ||
| DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x10monitoring.proto\x12\nMonitoring\"\x84\x01\n\tIpAddress\x12-\n\x02\x61\x66\x18\x01 \x02(\x0e\x32!.Monitoring.IpAddress.addr_family\x12\x0c\n\x04\x61\x64\x64r\x18\x02 \x02(\x0c\":\n\x0b\x61\x64\x64r_family\x12\x14\n\x10\x41\x44\x44R_FAMILY_INET\x10\x02\x12\x15\n\x11\x41\x44\x44R_FAMILY_INET6\x10\n\"\x1a\n\nMacAddress\x12\x0c\n\x04\x61\x64\x64r\x18\x01 \x02(\x0c\"\xf2\x01\n\x05Swarm\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x10\n\x08swarm_id\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12&\n\x06status\x18\x04 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12\x30\n\x11public_ip_address\x18\x05 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12)\n\nip_address\x18\x06 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x18\n\x10\x66irmware_version\x18\x07 \x01(\t\"\xdf\x02\n\x06Tunnel\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x10\n\x08swarm_id\x18\x02 \x01(\t\x12&\n\x05index\x18\x03 \x01(\x0e\x32\x17.Monitoring.TunnelIndex\x12+\n\x0b\x63rypto_type\x18\x04 \x01(\x0e\x32\x16.Monitoring.CryptoType\x12\x11\n\tpeer_name\x18\x05 \x01(\t\x12*\n\x0bpeer_tun_ip\x18\x06 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12(\n\ttunnel_ip\x18\x07 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12&\n\x06status\x18\x08 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12\x0e\n\x06\x61\x63tive\x18\t \x01(\x08\x12\x0e\n\x06uptime\x18\n \x01(\r\x12\x11\n\ttunnel_id\x18\x0b \x01(\x04\"\xc1\x0e\n\tInterface\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\'\n\x07macaddr\x18\x03 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12&\n\x06status\x18\x04 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12%\n\x06ipaddr\x18\x05 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x31\n\x0b\x64uplex_mode\x18\x06 \x01(\x0e\x32\x1c.Monitoring.Interface.Duplex\x12\x0c\n\x04name\x18\x07 \x01(\t\x12\x13\n\x0bport_number\x18\x08 \x01(\t\x12,\n\x04type\x18\t \x01(\x0e\x32\x1e.Monitoring.Interface.IntfType\x12\x0c\n\x04mode\x18\n \x01(\t\x12\x0c\n\x04vlan\x18\x0b \x01(\r\x12\x35\n\x07has_poe\x18\x0c \x01(\x0e\x32 .Monitoring.Interface.PoeSupport:\x02NA\x12)\n\tpoe_state\x18\r \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12*\n\noper_state\x18\x0e \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12+\n\x0b\x61\x64min_state\x18\x0f \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12.\n\x05speed\x18\x10 \x01(\x0e\x32\x1f.Monitoring.Interface.SpeedType\x12\x0b\n\x03mux\x18\x11 \x01(\r\x12\x0f\n\x07trusted\x18\x12 \x01(\r\x12\x0c\n\x04slot\x18\x13 \x01(\t\x12\x30\n\x08phy_type\x18\x14 \x01(\x0e\x32\x1e.Monitoring.Interface.PortType\x12\x10\n\x08sub_type\x18\x15 \x01(\t\x12\x14\n\x0c\x61llowed_vlan\x18\x16 \x03(\r\x12\x13\n\x0bnative_vlan\x18\x17 \x01(\r\x12\x13\n\x0bvsx_enabled\x18\x18 \x01(\x08\x12@\n\x11state_down_reason\x18\x19 \x01(\x0e\x32%.Monitoring.Interface.StateDownReason\x12\x32\n\tvlan_mode\x18\x1a \x01(\x0e\x32\x1f.Monitoring.Interface.VlanModes\"&\n\x06\x44uplex\x12\x08\n\x04HALF\x10\x01\x12\x08\n\x04\x46ULL\x10\x02\x12\x08\n\x04\x41UTO\x10\x03\"\x91\x01\n\x08IntfType\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x0c\n\x08LOOPBACK\x10\x02\x12\x08\n\x04VLAN\x10\x03\x12\n\n\x06TUNNEL\x10\x04\x12\x10\n\x0cPORT_CHANNEL\x10\x05\x12\x0b\n\x07STANDBY\x10\x06\x12\n\n\x06\x42RIDGE\x10\x07\x12\t\n\x05SPLIT\x10\x08\x12\t\n\x05STACK\x10\t\x12\x08\n\x04MGMT\x10\n\x12\x08\n\x04NONE\x10\x0b\"l\n\tSpeedType\x12\x11\n\rSPEED_INVALID\x10\x00\x12\x0e\n\nSPEED_AUTO\x10\x01\x12\x0c\n\x08SPEED_10\x10\x02\x12\r\n\tSPEED_100\x10\x03\x12\x0e\n\nSPEED_1000\x10\x04\x12\x0f\n\x0bSPEED_10000\x10\x05\"J\n\x08PortType\x12\x0b\n\x07PT_RJ45\x10\x00\x12\x0b\n\x07PT_GBIC\x10\x01\x12\r\n\tPT_SERIAL\x10\x02\x12\n\n\x06PT_USB\x10\x03\x12\t\n\x05PT_X2\x10\x04\"6\n\nPoeSupport\x12\x06\n\x02NA\x10\x00\x12\r\n\tSUPPORTED\x10\x01\x12\x11\n\rNOT_SUPPORTED\x10\x02\"\xdc\x03\n\x0fStateDownReason\x12\x11\n\rUNINITIALIZED\x10\x01\x12\x14\n\x10WAITING_FOR_LINK\x10\x02\x12\x18\n\x14\x41\x44MIN_INTERFACE_DOWN\x10\x03\x12\x12\n\x0eMODULE_MISSING\x10\x04\x12\x17\n\x13MODULE_UNRECOGNIZED\x10\x05\x12\x16\n\x12MODULE_UNSUPPORTED\x10\x06\x12\x17\n\x13MODULE_INCOMPATIBLE\x10\x07\x12\x10\n\x0cMODULE_FAULT\x10\x08\x12\x18\n\x14GROUP_SPEED_MISMATCH\x10\t\x12\x0f\n\x0bLANES_SPLIT\x10\n\x12\x13\n\x0fLANES_NOT_SPLIT\x10\x0b\x12\x0f\n\x0bINVALID_MTU\x10\x0c\x12\x12\n\x0eINVALID_SPEEDS\x10\r\x12\x19\n\x15\x41UTONEG_NOT_SUPPORTED\x10\x0e\x12\x14\n\x10\x41UTONEG_REQUIRED\x10\x0f\x12\x14\n\x10INTERFACE_ABSENT\x10\x10\x12\x1d\n\x19PHYSICAL_INTERFACE_FAILED\x10\x11\x12\x1e\n\x1aPSPO_ENABLEMENT_LAYER_DOWN\x10\x12\x12\x19\n\x15\x43\x41RD_INTERFACE_ERRORS\x10\x13\x12\x10\n\x0cINTERFACE_OK\x10\x14\"?\n\tVlanModes\x12\n\n\x06\x41\x43\x43\x45SS\x10\x01\x12\x11\n\rNATIVE_TAGGED\x10\x02\x12\x13\n\x0fNATIVE_UNTAGGED\x10\x03\"\xd1\x01\n\x07VapInfo\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12)\n\tradio_mac\x18\x03 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\r\n\x05\x65ssid\x18\x04 \x01(\x0c\x12&\n\x06\x61p_mac\x18\x05 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12%\n\x05\x62ssid\x18\x06 \x01(\x0b\x32\x16.Monitoring.MacAddress\"\x84\x02\n\x05Radio\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\r\n\x05index\x18\x03 \x01(\r\x12\'\n\x07macaddr\x18\x04 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12&\n\x06status\x18\x05 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12\x0f\n\x07\x63hannel\x18\x06 \x01(\t\x12\x0c\n\x04\x62\x61nd\x18\x07 \x01(\r\x12\x15\n\rchannel_width\x18\x08 \x01(\r\x12&\n\x06\x61p_mac\x18\t \x01(\x0b\x32\x16.Monitoring.MacAddress\"\xc5\x03\n\x02\x41p\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x0e\n\x06serial\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\'\n\x07macaddr\x18\x04 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x12\n\ncluster_id\x18\x05 \x01(\t\x12&\n\x06status\x18\x06 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12)\n\nip_address\x18\x07 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\r\n\x05model\x18\x08 \x01(\t\x12\x11\n\tmesh_role\x18\t \x01(\t\x12\x0c\n\x04mode\x18\n \x01(\t\x12\x14\n\x0cswarm_master\x18\x0b \x01(\x08\x12\x17\n\x0fmodem_connected\x18\x0c \x01(\x08\x12.\n\x0buplink_type\x18\r \x01(\x0e\x32\x19.Monitoring.Ap.UplinkType\x12\x18\n\x10\x66irmware_version\x18\x0e \x01(\t\"<\n\nUplinkType\x12\x0c\n\x08\x45THERNET\x10\x01\x12\x08\n\x04MESH\x10\x02\x12\x0b\n\x07STATION\x10\x03\x12\t\n\x05MODEM\x10\x04\"v\n\x07Network\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x10\n\x08swarm_id\x18\x02 \x01(\t\x12\r\n\x05\x65ssid\x18\x03 \x01(\x0c\x12\x10\n\x08security\x18\x04 \x01(\t\x12\x0c\n\x04type\x18\x05 \x01(\t\"\xf5\x02\n\x0eWirelessClient\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\'\n\x07macaddr\x18\x02 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x0c\n\x04name\x18\x03 \x01(\t\x12)\n\nip_address\x18\x04 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x10\n\x08username\x18\x05 \x01(\t\x12\x19\n\x11\x61ssociated_device\x18\x06 \x01(\t\x12)\n\tradio_mac\x18\x07 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x0f\n\x07network\x18\x08 \x01(\x0c\x12\x11\n\tuser_role\x18\t \x01(\t\x12\x14\n\x0cmanufacturer\x18\n \x01(\t\x12\x0f\n\x07os_type\x18\x0b \x01(\t\x12\x12\n\nconnection\x18\x0c \x01(\t\x12\x10\n\x08maxspeed\x18\r \x01(\r\x12\x0c\n\x04vlan\x18\x0e \x01(\r\"\xb8\x01\n\x0eHardwareModule\x12\r\n\x05index\x18\x01 \x01(\r\x12\x39\n\x06status\x18\x02 \x01(\x0e\x32).Monitoring.HardwareModule.HardwareStatus\"\\\n\x0eHardwareStatus\x12\x06\n\x02OK\x10\x00\x12\t\n\x05\x45RROR\x10\x01\x12\x11\n\rNOT_CONNECTED\x10\x02\x12\n\n\x06\x41\x43TIVE\x10\x03\x12\x0b\n\x07STANDBY\x10\x04\x12\x0b\n\x07OFFLINE\x10\x05\"\xf8\x05\n\x06Switch\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x0e\n\x06serial\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\'\n\x07macaddr\x18\x04 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\r\n\x05model\x18\x05 \x01(\t\x12&\n\x06status\x18\x06 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12\x30\n\x11public_ip_address\x18\x07 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12)\n\nip_address\x18\x08 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x18\n\x10\x66irmware_version\x18\t \x01(\t\x12.\n\x0f\x64\x65\x66\x61ult_gateway\x18\n \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x13\n\x0b\x64\x65vice_mode\x18\x0b \x01(\r\x12\x14\n\x0cuplink_ports\x18\x0c \x03(\t\x12\x11\n\tmax_slots\x18\r \x01(\r\x12\x12\n\nused_slots\x18\x0e \x03(\t\x12\x36\n\x12management_modules\x18\x0f \x03(\x0b\x32\x1a.Monitoring.HardwareModule\x12\x32\n\x0epower_supplies\x18\x10 \x03(\x0b\x32\x1a.Monitoring.HardwareModule\x12\x10\n\x08stack_id\x18\x11 \x01(\t\x12\x17\n\x0fstack_member_id\x18\x12 \x01(\r\x12=\n\x11stack_member_role\x18\x13 \x01(\x0e\x32\".Monitoring.Switch.StackMemberRole\x12-\n\rstack_macaddr\x18\x14 \x01(\x0b\x32\x16.Monitoring.MacAddress\"F\n\x0fStackMemberRole\x12\x0b\n\x07UNKNOWN\x10\x01\x12\r\n\tCOMMANDER\x10\x02\x12\x0b\n\x07STANDBY\x10\x03\x12\n\n\x06MEMBER\x10\x04\"\xdc\x03\n\x0bSwitchStack\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x10\n\x08stack_id\x18\x02 \x01(\t\x12&\n\x06status\x18\x03 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12\x37\n\x08topology\x18\x04 \x01(\x0e\x32%.Monitoring.SwitchStack.StackTopology\x12\x33\n\x06policy\x18\x05 \x01(\x0e\x32#.Monitoring.SwitchStack.StackPolicy\x12\x18\n\x10\x66irmware_version\x18\x06 \x01(\t\x12\x15\n\rvsf_domain_id\x18\x07 \x01(\r\"]\n\rStackTopology\x12\x0e\n\nSTANDALONE\x10\x01\x12\t\n\x05\x43HAIN\x10\x02\x12\x08\n\x04RING\x10\x03\x12\x08\n\x04MESH\x10\x04\x12\x10\n\x0cPARTIAL_MESH\x10\x05\x12\x0b\n\x07UNKNOWN\x10\x06\"i\n\x0bStackPolicy\x12\x17\n\x13STACK_SPLIT_UNKNOWN\x10\x00\x12\x1f\n\x1bSTACK_SPLIT_ONE_FRAGMENT_UP\x10\x01\x12 \n\x1cSTACK_SPLIT_ALL_FRAGMENTS_UP\x10\x02\"\xc1\x02\n\x0bWiredClient\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\'\n\x07macaddr\x18\x02 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x0c\n\x04name\x18\x03 \x01(\t\x12)\n\nip_address\x18\x04 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x10\n\x08username\x18\x05 \x01(\t\x12\x19\n\x11\x61ssociated_device\x18\x06 \x01(\t\x12-\n\rinterface_mac\x18\x07 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x11\n\tuser_role\x18\x08 \x01(\t\x12\x0c\n\x04vlan\x18\t \x01(\r\x12\'\n\tauth_type\x18\n \x01(\x0e\x32\x14.Monitoring.AuthType\"\xcb\x03\n\x12MobilityController\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x0e\n\x06serial\x18\x02 \x01(\t\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\'\n\x07macaddr\x18\x04 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\r\n\x05model\x18\x05 \x01(\t\x12&\n\x06status\x18\x06 \x01(\x0e\x32\x12.Monitoring.Status:\x02UP\x12\x30\n\x11public_ip_address\x18\x07 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12)\n\nip_address\x18\x08 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x18\n\x10\x66irmware_version\x18\t \x01(\t\x12.\n\x0f\x64\x65\x66\x61ult_gateway\x18\n \x01(\x0b\x32\x15.Monitoring.IpAddress\x12;\n\x04mode\x18\x0b \x01(\x0e\x32-.Monitoring.MobilityController.ControllerMode\"\'\n\x0e\x43ontrollerMode\x12\x0b\n\x07GATEWAY\x10\x00\x12\x08\n\x04VPNC\x10\x01\"\xe9\x02\n\x06Uplink\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\x12\n\nlink_index\x18\x03 \x01(\x04\x12\x0c\n\x04name\x18\x04 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x05 \x01(\t\x12\x10\n\x08priority\x18\x06 \x01(\r\x12\"\n\x06status\x18\x07 \x01(\x0e\x32\x12.Monitoring.Status\x12&\n\nwan_status\x18\x08 \x01(\x0e\x32\x12.Monitoring.Status\x12\x0c\n\x04vlan\x18\t \x01(\r\x12\x18\n\x10vlan_description\x18\n \x01(\t\x12\x30\n\x11public_ip_address\x18\x0b \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x31\n\x12private_ip_address\x18\x0c \x01(\x0b\x32\x15.Monitoring.IpAddress\"\xb3\x02\n\tIkeTunnel\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\x0e\n\x06map_id\x18\x03 \x01(\x04\x12(\n\x08peer_mac\x18\x04 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12)\n\tlocal_mac\x18\x05 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12%\n\x06src_ip\x18\x06 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12%\n\x06\x64st_ip\x18\x07 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\"\n\x06status\x18\x08 \x01(\x0e\x32\x12.Monitoring.Status\x12\x10\n\x08map_name\x18\t \x01(\t\"\xc5\x02\n\x0b\x44\x65viceStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\r\x12\x0e\n\x06uptime\x18\x03 \x01(\x04\x12\x17\n\x0f\x63pu_utilization\x18\x04 \x01(\r\x12\x11\n\tmem_total\x18\x05 \x01(\x04\x12\x10\n\x08mem_free\x18\x06 \x01(\x04\x12\x19\n\x11power_consumption\x18\x07 \x01(\r\x12\x11\n\tfan_speed\x18\x08 \x01(\r\x12\x13\n\x0btemperature\x18\t \x01(\r\x12&\n\nfan_status\x18\n \x01(\x0e\x32\x12.Monitoring.Status\x12\x11\n\tmax_power\x18\x0b \x01(\r\x12\x17\n\x0fpoe_consumption\x18\x0c \x01(\r\x12\x12\n\npoe_budget\x18\r \x01(\r\x12\x17\n\x0fmem_utilization\x18\x0e \x01(\x04\"\xdd\x01\n\nRadioStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\'\n\x07macaddr\x18\x02 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\x12\x10\n\x08tx_drops\x18\x06 \x01(\r\x12\x10\n\x08tx_power\x18\x07 \x01(\r\x12\x13\n\x0bnoise_floor\x18\x08 \x01(\r\x12\x13\n\x0butilization\x18\t \x01(\r\x12\x0e\n\x06rx_bad\x18\n \x01(\x04\"\x90\x01\n\x08VapStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12)\n\tradio_mac\x18\x02 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x0f\n\x07network\x18\x03 \x01(\x0c\x12\x11\n\ttimestamp\x18\x04 \x01(\r\x12\x10\n\x08tx_bytes\x18\x05 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x06 \x01(\x04\"\xb9\x01\n\x0bTunnelStats\x12\x10\n\x08swarm_id\x18\x01 \x01(\t\x12&\n\x05index\x18\x02 \x01(\x0e\x32\x17.Monitoring.TunnelIndex\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\x12\x11\n\ttunnel_id\x18\x06 \x01(\x04\x12\x13\n\x0btunnel_name\x18\x07 \x01(\t\x12\x11\n\tdevice_id\x18\x08 \x01(\t\"\xda\x01\n\x0b\x43lientStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\'\n\x07macaddr\x18\x02 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\x12\x12\n\nrx_retries\x18\x06 \x01(\r\x12\x12\n\ntx_retries\x18\x07 \x01(\r\x12\r\n\x05speed\x18\x08 \x01(\r\x12\x14\n\x0csignal_in_db\x18\t \x01(\r\x12\x0b\n\x03snr\x18\n \x01(\r\"\xa8\x05\n\x0eInterfaceStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\'\n\x07macaddr\x18\x02 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\x12\x19\n\x11power_consumption\x18\x06 \x01(\r\x12\x11\n\tin_errors\x18\x07 \x01(\x04\x12\x12\n\nout_errors\x18\x08 \x01(\x04\x12\x13\n\x0bin_discards\x18\t \x01(\x04\x12\x14\n\x0cout_discards\x18\n \x01(\x04\x12\x12\n\nin_packets\x18\x0b \x01(\x04\x12\x13\n\x0bout_packets\x18\x0c \x01(\x04\x12\x14\n\x0cin_other_err\x18\r \x01(\r\x12\x18\n\x10in_multicast_pkt\x18\x0e \x01(\x04\x12\x18\n\x10in_broadcast_pkt\x18\x0f \x01(\x04\x12\x16\n\x0ein_unicast_pkt\x18\x10 \x01(\x04\x12\x19\n\x11out_multicast_pkt\x18\x11 \x01(\x04\x12\x19\n\x11out_broadcast_pkt\x18\x12 \x01(\x04\x12\x17\n\x0fout_unicast_pkt\x18\x13 \x01(\x04\x12\x0e\n\x06in_fcs\x18\x14 \x01(\x04\x12\x14\n\x0cin_alignment\x18\x15 \x01(\x04\x12\x1f\n\x17out_excessive_collision\x18\x16 \x01(\r\x12\x12\n\nin_jabbers\x18\x17 \x01(\x04\x12\x15\n\rin_fragmented\x18\x18 \x01(\x04\x12\x10\n\x08in_giant\x18\x19 \x01(\r\x12\x0f\n\x07in_runt\x18\x1a \x01(\r\x12\x15\n\rout_collision\x18\x1b \x01(\x04\x12\x1a\n\x12out_late_collision\x18\x1c \x01(\r\x12\x14\n\x0cout_deferred\x18\x1d \x01(\r\"\xbc\x01\n\x0bUplinkStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\x0f\n\x07link_id\x18\x02 \x01(\r\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\x12\x17\n\x0ftunnel_tx_bytes\x18\x06 \x01(\x04\x12\x17\n\x0ftunnel_rx_bytes\x18\x07 \x01(\x04\x12\x0e\n\x06map_id\x18\x08 \x01(\x04\x12\x10\n\x08map_name\x18\t \x01(\t\"\x94\x01\n\x0eUplinkWanStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\x0f\n\x07link_id\x18\x02 \x01(\r\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x18\n\x10\x63ompressed_bytes\x18\x04 \x01(\x04\x12\x1a\n\x12uncompressed_bytes\x18\x05 \x01(\x04\x12\x15\n\rsavings_bytes\x18\x06 \x01(\x04\"V\n\nModemStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\x11\n\ttimestamp\x18\x02 \x01(\r\x12\x10\n\x08tx_bytes\x18\x03 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x04 \x01(\x04\"h\n\tRoleStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\x11\n\tuser_role\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\"c\n\tVlanStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\x0c\n\x04vlan\x18\x02 \x01(\r\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\"d\n\tSsidStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\r\n\x05\x65ssid\x18\x02 \x01(\x0c\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12\x10\n\x08tx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x05 \x01(\x04\"\xe1\x01\n\x12TunnelIpProbeStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12-\n\x0ctunnel_index\x18\x02 \x01(\x0e\x32\x17.Monitoring.TunnelIndex\x12,\n\rprobe_ip_addr\x18\x03 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x14\n\x0cprobe_status\x18\x04 \x01(\r\x12\x1d\n\x15ip_probe_pkt_loss_pct\x18\x05 \x01(\r\x12\x13\n\x0btunnel_name\x18\x06 \x01(\t\x12\x11\n\ttunnel_id\x18\x11 \x01(\x04\"\xdf\x05\n\x12UplinkIpProbeStats\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12\x0f\n\x07link_id\x18\x02 \x01(\r\x12\x11\n\ttimestamp\x18\x03 \x01(\r\x12)\n\nip_address\x18\x04 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x0c\n\x04vlan\x18\x05 \x01(\r\x12\x0f\n\x07\x61vg_rtt\x18\x06 \x01(\x04\x12\x0f\n\x07max_rtt\x18\x07 \x01(\x04\x12\x0f\n\x07min_rtt\x18\x08 \x01(\x04\x12\x12\n\navg_jitter\x18\t \x01(\x04\x12\x12\n\nmax_jitter\x18\n \x01(\x04\x12\x12\n\nmin_jitter\x18\x0b \x01(\x04\x12\x13\n\x0bmos_quality\x18\x0c \x01(\x04\x12\x16\n\x0esd_avg_latency\x18\r \x01(\x04\x12\x16\n\x0e\x64s_avg_latency\x18\x0e \x01(\x04\x12\x15\n\rsd_avg_jitter\x18\x0f \x01(\x04\x12\x15\n\rds_avg_jitter\x18\x10 \x01(\x04\x12\x14\n\x0cprobe_status\x18\x11 \x01(\r\x12\x10\n\x08loss_pct\x18\x12 \x01(\r\x12\x14\n\x0cvpnc_ip_addr\x18\x13 \x01(\x04\x12\x15\n\rprobe_ip_addr\x18\x14 \x01(\x04\x12\x15\n\ravg_rtt_float\x18\x15 \x01(\x02\x12\x15\n\rmax_rtt_float\x18\x16 \x01(\x02\x12\x15\n\rmin_rtt_float\x18\x17 \x01(\x02\x12\x18\n\x10\x61vg_jitter_float\x18\x18 \x01(\x02\x12\x18\n\x10max_jitter_float\x18\x19 \x01(\x02\x12\x18\n\x10min_jitter_float\x18\x1a \x01(\x02\x12\x19\n\x11mos_quality_float\x18\x1b \x01(\x02\x12\x1c\n\x14sd_avg_latency_float\x18\x1c \x01(\x02\x12\x1c\n\x14\x64s_avg_latency_float\x18\x1d \x01(\x02\x12\x1b\n\x13sd_avg_jitter_float\x18\x1e \x01(\x02\x12\x1b\n\x13\x64s_avg_jitter_float\x18\x1f \x01(\x02\"\xe3\x01\n\x0fUplinkSpeedtest\x12\x11\n\tdevice_id\x18\x01 \x01(\t\x12(\n\tserver_ip\x18\x02 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x0c\n\x04vlan\x18\x03 \x01(\r\x12\x10\n\x08protocol\x18\x04 \x01(\t\x12\x14\n\x0cupstream_bps\x18\x05 \x01(\x04\x12\x16\n\x0e\x64ownstream_bps\x18\x06 \x01(\x04\x12\x11\n\ttime_secs\x18\x07 \x01(\r\x12\x17\n\x0fupstream_jitter\x18\x08 \x01(\x02\x12\x19\n\x11\x64ownstream_jitter\x18\t \x01(\x02\"\x92\x0e\n\tWIDSEvent\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x33\n\nevent_type\x18\x02 \x01(\x0e\x32\x1f.Monitoring.WIDSEvent.EventType\x12\'\n\x07macaddr\x18\x03 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x13\n\x0b\x64\x65tected_ap\x18\x04 \x01(\t\x12\x35\n\x0b\x61ttack_type\x18\x05 \x01(\x0e\x32 .Monitoring.WIDSEvent.AttackType\x12\x0f\n\x07\x63hannel\x18\x06 \x01(\t\x12\x0f\n\x07network\x18\x07 \x01(\x0c\"U\n\tEventType\x12\t\n\x05ROGUE\x10\x01\x12\x0f\n\x0bINTERFERING\x10\x02\x12\x19\n\x15INFRASTRUCTURE_ATTACK\x10\x03\x12\x11\n\rCLIENT_ATTACK\x10\x04\"\xb5\x0b\n\nAttackType\x12\x1c\n\x18\x44\x45TECT_VALID_SSID_MISUSE\x10\x01\x12\x18\n\x14\x44\x45TECT_ADHOC_NETWORK\x10\x02\x12\x13\n\x0f\x44\x45TECT_AP_FLOOD\x10\x03\x12\x1a\n\x16\x44\x45TECT_WIRELESS_BRIDGE\x10\x04\x12\x1d\n\x19\x44\x45TECT_INVALID_MAC_OUI_AP\x10\x05\x12\x1e\n\x1a\x44\x45TECT_INVALID_MAC_OUI_STA\x10\x06\x12\x12\n\x0e\x44\x45TECT_BAD_WEP\x10\x07\x12\x1b\n\x17\x44\x45TECT_AP_IMPERSONATION\x10\x08\x12\x19\n\x15\x44\x45TECT_WINDOWS_BRIDGE\x10\t\x12!\n\x1dSIGNATURE_DEAUTH_BROADCAST_AP\x10\n\x12\"\n\x1eSIGNATURE_DEAUTH_BROADCAST_STA\x10\x0b\x12\x18\n\x14\x44\x45TECT_HT_GREENFIELD\x10\x0c\x12\"\n\x1e\x44\x45TECT_HT_40MHZ_INTOLERANCE_AP\x10\r\x12#\n\x1f\x44\x45TECT_HT_40MHZ_INTOLERANCE_STA\x10\x0e\x12\x17\n\x13\x44\x45TECT_CLIENT_FLOOD\x10\x0f\x12!\n\x1d\x44\x45TECT_ADHOC_USING_VALID_SSID\x10\x10\x12\x16\n\x12\x44\x45TECT_AP_SPOOFING\x10\x11\x12%\n!DETECT_INVALID_ADDRESSCOMBINATION\x10\x12\x12\x19\n\x15\x44\x45TECT_MALFORMED_HTIE\x10\x13\x12\x1e\n\x1a\x44\x45TECT_MALFORMED_ASSOC_REQ\x10\x14\x12\x16\n\x12\x44\x45TECT_OVERFLOW_IE\x10\x15\x12\x1d\n\x19\x44\x45TECT_OVERFLOW_EAPOL_KEY\x10\x16\x12#\n\x1f\x44\x45TECT_MALFORMED_LARGE_DURATION\x10\x17\x12(\n$DETECT_MALFORMED_FRAME_WRONG_CHANNEL\x10\x18\x12\x1f\n\x1b\x44\x45TECT_MALFORMED_FRAME_AUTH\x10\x19\x12\x1b\n\x17\x44\x45TECT_CTS_RATE_ANOMALY\x10\x1a\x12\x1b\n\x17\x44\x45TECT_RTS_RATE_ANOMALY\x10\x1b\x12\x1e\n\x1aSIGNATURE_DEAUTH_BROADCAST\x10\x1c\x12%\n!SIGNATURE_DEASSOCIATION_BROADCAST\x10\x1d\x12\x1f\n\x1b\x44\x45TECT_RATE_ANOMALIES_BY_AP\x10\x1e\x12 \n\x1c\x44\x45TECT_RATE_ANOMALIES_BY_STA\x10\x1f\x12\x1b\n\x17\x44\x45TECT_EAP_RATE_ANOMALY\x10 \x12\x19\n\x15\x44\x45TECT_DISCONNECT_STA\x10!\x12\x1c\n\x18SIGNATURE_ASLEAP_FROM_AP\x10\"\x12\x1d\n\x19SIGNATURE_ASLEAP_FROM_STA\x10#\x12\x1d\n\x19SIGNATURE_AIRJACK_FROM_AP\x10$\x12\x1e\n\x1aSIGNATURE_AIRJACK_FROM_STA\x10%\x12\'\n#DETECT_STATION_DISCONNECT_ATTACK_AP\x10&\x12\x1c\n\x18\x44\x45TECT_UNENCRYPTED_VALID\x10\'\x12\x18\n\x14\x44\x45TECT_OMERTA_ATTACK\x10(\x12\x1d\n\x19\x44\x45TECT_TKIP_REPLAY_ATTACK\x10)\x12\x1a\n\x16\x44\x45TECT_CHOPCHOP_ATTACK\x10*\x12\x13\n\x0f\x44\x45TECT_FATAJACK\x10+\x12&\n\"DETECT_VALID_CLIENT_MISASSOCIATION\x10,\x12\x1b\n\x17\x44\x45TECT_BLOCK_ACK_ATTACK\x10-\x12\x1c\n\x18\x44\x45TECT_HOTSPOTTER_ATTACK\x10.\x12 \n\x1c\x44\x45TECT_POWER_SAVE_DOS_ATTACK\x10/\"\xdd\x05\n\x13\x41irMonitorRogueInfo\x12\x46\n\nmatch_type\x18\x01 \x01(\x0e\x32\x32.Monitoring.AirMonitorRogueInfo.wms_rap_match_type\x12)\n\tmatch_mac\x18\x02 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\'\n\x08match_ip\x18\x03 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x14\n\x0cmonitor_name\x18\x04 \x01(\t\x12N\n\x0enat_match_type\x18\x05 \x01(\x0e\x32\x36.Monitoring.AirMonitorRogueInfo.wms_rap_nat_match_type\"\xc6\x02\n\x12wms_rap_match_type\x12\x0f\n\x0bRAP_MT_NONE\x10\x00\x12\x11\n\rRAP_MT_CFG_WM\x10\x01\x12\x11\n\rRAP_MT_ETH_WM\x10\x02\x12\x10\n\x0cRAP_MT_AP_WM\x10\x03\x12\x11\n\rRAP_MT_EXT_WM\x10\x04\x12\x11\n\rRAP_MT_MANUAL\x10\x05\x12\x15\n\x11RAP_MT_BASE_BSSID\x10\x06\x12\x0e\n\nRAP_MT_EMS\x10\x07\x12\x14\n\x10RAP_MT_ETH_GW_WM\x10\x08\x12\x14\n\x10RAP_MT_CLASS_OFF\x10\t\x12\x13\n\x0fRAP_MT_AP_BSSID\x10\n\x12\x16\n\x12RAP_MT_PROP_ETH_WM\x10\x0b\x12\x12\n\x0eRAP_MT_AP_RULE\x10\x0c\x12\x14\n\x10RAP_MT_SYSTEM_WM\x10\r\x12\x17\n\x13RAP_MT_SYSTEM_GW_WM\x10\x0e\"{\n\x16wms_rap_nat_match_type\x12\x10\n\x0cRAP_NMT_NONE\x10\x00\x12\x11\n\rRAP_NMT_EQUAL\x10\x01\x12\x14\n\x10RAP_NMT_PLUS_ONE\x10\x02\x12\x15\n\x11RAP_NMT_MINUS_ONE\x10\x03\x12\x0f\n\x0bRAP_NMT_OUI\x10\x04\"\x93\x03\n\nRogueEvent\x12\'\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x03\x41\x44\x44\x12\x13\n\x0b\x64\x65tected_ap\x18\x02 \x01(\t\x12\'\n\x07macaddr\x18\x03 \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x0f\n\x07\x63hannel\x18\x04 \x01(\r\x12\x0f\n\x07network\x18\x05 \x01(\x0c\x12@\n\tencr_type\x18\x06 \x01(\x0e\x32-.Monitoring.RogueEvent.wms_snmp_encr_protocol\x12\x31\n\x08\x61m_rogue\x18\x07 \x01(\x0b\x32\x1f.Monitoring.AirMonitorRogueInfo\"\x86\x01\n\x16wms_snmp_encr_protocol\x12\x1a\n\x16WMS_SNMP_WPA_ENCR_OPEN\x10\x00\x12\x19\n\x15WMS_SNMP_WPA_ENCR_WEP\x10\x01\x12\x19\n\x15WMS_SNMP_WPA_ENCR_WPA\x10\x02\x12\x1a\n\x16WMS_SNMP_WPA_ENCR_WPA2\x10\x03\"\xbb\x01\n\x10\x44\x65viceNeighbours\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12\x0c\n\x04port\x18\x03 \x01(\t\x12\x18\n\x10remote_device_id\x18\x04 \x01(\t\x12\x13\n\x0bremote_port\x18\x05 \x01(\t\x12\x1a\n\x12remote_port_number\x18\x06 \x01(\t\x12\x0f\n\x07vlan_id\x18\x07 \x01(\t\"\xc9\r\n\x15MonitoringInformation\x12\x13\n\x0b\x63ustomer_id\x18\x01 \x02(\t\x12.\n\rdata_elements\x18\x02 \x03(\x0e\x32\x17.Monitoring.DataElement\x12!\n\x06swarms\x18\x03 \x03(\x0b\x32\x11.Monitoring.Swarm\x12\x1b\n\x03\x61ps\x18\x04 \x03(\x0b\x32\x0e.Monitoring.Ap\x12%\n\x08networks\x18\x05 \x03(\x0b\x32\x13.Monitoring.Network\x12!\n\x06radios\x18\x06 \x03(\x0b\x32\x11.Monitoring.Radio\x12!\n\x04vaps\x18\x07 \x03(\x0b\x32\x13.Monitoring.VapInfo\x12)\n\ninterfaces\x18\x08 \x03(\x0b\x32\x15.Monitoring.Interface\x12#\n\x07tunnels\x18\t \x03(\x0b\x32\x12.Monitoring.Tunnel\x12\x34\n\x10wireless_clients\x18\n \x03(\x0b\x32\x1a.Monitoring.WirelessClient\x12$\n\x08switches\x18\x0b \x03(\x0b\x32\x12.Monitoring.Switch\x12.\n\rwired_clients\x18\x0c \x03(\x0b\x32\x17.Monitoring.WiredClient\x12-\n\x0c\x64\x65vice_stats\x18\r \x03(\x0b\x32\x17.Monitoring.DeviceStats\x12+\n\x0bradio_stats\x18\x0e \x03(\x0b\x32\x16.Monitoring.RadioStats\x12\x33\n\x0finterface_stats\x18\x0f \x03(\x0b\x32\x1a.Monitoring.InterfaceStats\x12\'\n\tvap_stats\x18\x10 \x03(\x0b\x32\x14.Monitoring.VapStats\x12-\n\x0c\x63lient_stats\x18\x11 \x03(\x0b\x32\x17.Monitoring.ClientStats\x12-\n\x0ctunnel_stats\x18\x12 \x03(\x0b\x32\x17.Monitoring.TunnelStats\x12*\n\x0bwids_events\x18\x13 \x03(\x0b\x32\x15.Monitoring.WIDSEvent\x12+\n\x0bmodem_stats\x18\x14 \x03(\x0b\x32\x16.Monitoring.ModemStats\x12)\n\nrole_stats\x18\x15 \x03(\x0b\x32\x15.Monitoring.RoleStats\x12)\n\nvlan_stats\x18\x16 \x03(\x0b\x32\x15.Monitoring.VlanStats\x12)\n\nssid_stats\x18\x17 \x03(\x0b\x32\x15.Monitoring.SsidStats\x12\x35\n\ripprobe_stats\x18\x18 \x03(\x0b\x32\x1e.Monitoring.TunnelIpProbeStats\x12,\n\x0crogue_events\x18\x19 \x03(\x0b\x32\x16.Monitoring.RogueEvent\x12<\n\x14mobility_controllers\x18\x1a \x03(\x0b\x32\x1e.Monitoring.MobilityController\x12#\n\x07uplinks\x18\x1b \x03(\x0b\x32\x12.Monitoring.Uplink\x12-\n\x0cuplink_stats\x18\x1c \x03(\x0b\x32\x17.Monitoring.UplinkStats\x12\x34\n\x10uplink_wan_stats\x18\x1d \x03(\x0b\x32\x1a.Monitoring.UplinkWanStats\x12:\n\x12uplink_probe_stats\x18\x1e \x03(\x0b\x32\x1e.Monitoring.UplinkIpProbeStats\x12\x35\n\x10uplink_speedtest\x18\x1f \x03(\x0b\x32\x1b.Monitoring.UplinkSpeedtest\x12\x37\n\x11\x64\x65vice_neighbours\x18 \x03(\x0b\x32\x1c.Monitoring.DeviceNeighbours\x12.\n\x0cnotification\x18! \x03(\x0b\x32\x18.Monitoring.Notification\x12.\n\rswitch_stacks\x18\" \x03(\x0b\x32\x17.Monitoring.SwitchStack\x12*\n\x0bike_tunnels\x18# \x03(\x0b\x32\x15.Monitoring.IkeTunnel\x12\x34\n\x10switch_vlan_info\x18$ \x01(\x0b\x32\x1a.Monitoring.SwitchVlanInfo\x12\x1f\n\x05vlans\x18% \x03(\x0b\x32\x10.Monitoring.Vlan\x12!\n\x03vsx\x18& \x01(\x0b\x32\x14.Monitoring.VSXState\x12\x11\n\ttimestamp\x18\' \x01(\r\"\xbc\x05\n\x1aMonitoringStateInformation\x12\x13\n\x0b\x63ustomer_id\x18\x01 \x02(\t\x12<\n\x14mobility_controllers\x18\x02 \x03(\x0b\x32\x1e.Monitoring.MobilityController\x12$\n\x08switches\x18\x03 \x03(\x0b\x32\x12.Monitoring.Switch\x12!\n\x06swarms\x18\x04 \x03(\x0b\x32\x11.Monitoring.Swarm\x12\x1b\n\x03\x61ps\x18\x05 \x03(\x0b\x32\x0e.Monitoring.Ap\x12!\n\x04vaps\x18\x06 \x03(\x0b\x32\x13.Monitoring.VapInfo\x12!\n\x06radios\x18\x07 \x03(\x0b\x32\x11.Monitoring.Radio\x12)\n\ninterfaces\x18\x08 \x03(\x0b\x32\x15.Monitoring.Interface\x12%\n\x08networks\x18\t \x03(\x0b\x32\x13.Monitoring.Network\x12#\n\x07tunnels\x18\n \x03(\x0b\x32\x12.Monitoring.Tunnel\x12\x34\n\x10wireless_clients\x18\x0b \x03(\x0b\x32\x1a.Monitoring.WirelessClient\x12.\n\rwired_clients\x18\x0c \x03(\x0b\x32\x17.Monitoring.WiredClient\x12#\n\x07uplinks\x18\r \x03(\x0b\x32\x12.Monitoring.Uplink\x12.\n\rswitch_stacks\x18\x0e \x03(\x0b\x32\x17.Monitoring.SwitchStack\x12*\n\x0bike_tunnels\x18\x0f \x03(\x0b\x32\x15.Monitoring.IkeTunnel\x12.\n\rdata_elements\x18\x10 \x03(\x0e\x32\x17.Monitoring.DataElement\x12\x11\n\ttimestamp\x18\x11 \x01(\r\"*\n\x0cKeyValueData\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t\"\x83\x03\n\x0cNotification\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x12\n\nsetting_id\x18\x03 \x01(\t\x12\x11\n\tdevice_id\x18\x04 \x01(\t\x12\x33\n\x08severity\x18\x05 \x01(\x0e\x32!.Monitoring.Notification.Severity\x12\x11\n\ttimestamp\x18\x06 \x01(\r\x12\x39\n\x05state\x18\x07 \x01(\x0e\x32*.Monitoring.Notification.NotificationState\x12\x13\n\x0b\x64\x65scription\x18\x08 \x01(\t\x12\'\n\x05\x65xtra\x18\t \x03(\x0b\x32\x18.Monitoring.KeyValueData\"G\n\x08Severity\x12\n\n\x06Normal\x10\x01\x12\x0b\n\x07Warning\x10\x02\x12\t\n\x05Minor\x10\x03\x12\t\n\x05Major\x10\x04\x12\x0c\n\x08\x43ritical\x10\x05\"(\n\x11NotificationState\x12\x08\n\x04Open\x10\x00\x12\t\n\x05\x43lose\x10\x01\"J\n\x0eSwitchVlanInfo\x12\x11\n\tdevice_id\x18\x01 \x02(\t\x12%\n\x05vlans\x18\x02 \x03(\x0b\x32\x16.Monitoring.SwitchVlan\"\xbc\x04\n\nSwitchVlan\x12\n\n\x02id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x14\n\x0ctagged_ports\x18\x03 \x03(\t\x12\x16\n\x0euntagged_ports\x18\x04 \x03(\t\x12\x17\n\x0fprimary_vlan_id\x18\x05 \x01(\r\x12\x19\n\x11primary_vlan_type\x18\x06 \x01(\t\x12\x19\n\x11promiscuous_ports\x18\x07 \x03(\t\x12\x11\n\tisl_ports\x18\x08 \x03(\t\x12\x1a\n\x12is_management_vlan\x18\t \x01(\x08\x12\x18\n\x10is_voice_enabled\x18\n \x01(\x08\x12\x18\n\x10is_jumbo_enabled\x18\x0b \x01(\x08\x12\x17\n\x0fis_igmp_enabled\x18\x0c \x01(\x08\x12(\n\tipaddress\x18\r \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x31\n\x06status\x18\x0e \x01(\x0e\x32!.Monitoring.SwitchVlan.VlanStatus\x12\x19\n\x11oper_state_reason\x18\x0f \x01(\t\x12-\n\x04type\x18\x10 \x01(\x0e\x32\x1f.Monitoring.SwitchVlan.VlanType\x12\x14\n\x0c\x61\x63\x63\x65ss_ports\x18\x11 \x03(\t\"\x1e\n\nVlanStatus\x12\x06\n\x02UP\x10\x01\x12\x08\n\x04\x44OWN\x10\x02\">\n\x08VlanType\x12\n\n\x06STATIC\x10\x01\x12\x0b\n\x07\x44YNAMIC\x10\x02\x12\x0c\n\x08INTERNAL\x10\x03\x12\x0b\n\x07\x44\x45\x46\x41ULT\x10\x04\"\xa4\x03\n\x04Vlan\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x0f\n\x07vlan_id\x18\x02 \x01(\r\x12#\n\x04ipv4\x18\x03 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12&\n\x07ipv6_ll\x18\x04 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12%\n\x06ipv6_1\x18\x05 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12%\n\x06ipv6_2\x18\x06 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12%\n\x06ipv6_3\x18\x07 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12&\n\noper_state\x18\x08 \x01(\x0e\x32\x12.Monitoring.Status\x12\x13\n\x0b\x64\x65scription\x18\t \x01(\t\x12\'\n\x0b\x61\x64min_state\x18\n \x01(\x0e\x32\x12.Monitoring.Status\x12\x11\n\taddr_mode\x18\x0b \x01(\t\x12\x11\n\ttimestamp\x18\x0c \x01(\r\x12\x11\n\tdevice_id\x18\r \x01(\t\"\xf6\n\n\x08VSXState\x12*\n\x06\x61\x63tion\x18\x01 \x01(\x0e\x32\x12.Monitoring.Action:\x06UPDATE\x12\x11\n\tdevice_id\x18\x02 \x01(\t\x12-\n\x04role\x18\x03 \x01(\x0e\x32\x1f.Monitoring.VSXState.DeviceRole\x12\x32\n\tpeer_role\x18\x04 \x01(\x0e\x32\x1f.Monitoring.VSXState.DeviceRole\x12\x10\n\x08isl_port\x18\x05 \x01(\t\x12\x15\n\rpeer_isl_port\x18\x06 \x01(\t\x12\x30\n\x11keepalive_peer_ip\x18\x07 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12/\n\x10keepalive_src_ip\x18\x08 \x01(\x0b\x32\x15.Monitoring.IpAddress\x12\x1b\n\x13last_sync_timestamp\x18\t \x01(\x04\x12#\n\x03mac\x18\n \x01(\x0b\x32\x16.Monitoring.MacAddress\x12(\n\x08peer_mac\x18\x0b \x01(\x0b\x32\x16.Monitoring.MacAddress\x12\x1b\n\x13\x63onfig_sync_disable\x18\x0c \x01(\x08\x12\x45\n\x17islp_device_state_value\x18\r \x01(\x0e\x32$.Monitoring.VSXState.ISLPDeviceState\x12>\n\x17\x63onfig_sync_state_value\x18\x0e \x01(\x0e\x32\x1d.Monitoring.VSXState.ISLState\x12;\n\x14isl_mgmt_state_value\x18\x0f \x01(\x0e\x32\x1d.Monitoring.VSXState.ISLState\x12\x36\n\x0fnae_state_value\x18\x10 \x01(\x0e\x32\x1d.Monitoring.VSXState.ISLState\x12?\n\x18https_server_state_value\x18\x11 \x01(\x0e\x32\x1d.Monitoring.VSXState.ISLState\"(\n\nDeviceRole\x12\x0b\n\x07PRIMARY\x10\x01\x12\r\n\tSECONDARY\x10\x02\"\xba\x01\n\x0fISLPDeviceState\x12\x14\n\x10WAITING_FOR_PEER\x10\x01\x12\x14\n\x10PEER_ESTABLISHED\x10\x02\x12\x18\n\x14SPLIT_SYSTEM_PRIMARY\x10\x03\x12\x1a\n\x16SPLIT_SYSTEM_SECONDARY\x10\x04\x12\x10\n\x0cSYNC_PRIMARY\x10\x05\x12\x12\n\x0eSYNC_SECONDARY\x10\x06\x12\x1f\n\x1bSYNC_SECONDARY_LINKUP_DELAY\x10\x07\"\x8e\x03\n\x08ISLState\x12\x0b\n\x07IN_SYNC\x10\x01\x12\x0c\n\x08\x44ISABLED\x10\x02\x12#\n\x1fSW_IMAGE_VERSION_MISMATCH_ERROR\x10\x03\x12$\n CONFLICTING_OR_MISSING_DEV_ROLES\x10\x04\x12\x1c\n\x18PEER_DB_CONNECTION_ERROR\x10\x05\x12\x1f\n\x1b\x43ONFIGURATION_SYNC_CONFLICT\x10\x06\x12(\n$CONFIGURATION_SYNC_MISSING_REFERENCE\x10\x07\x12\x12\n\x0ePEER_REACHABLE\x10\x08\x12\x14\n\x10PEER_UNREACHABLE\x10\t\x12\x0f\n\x0bOPERATIONAL\x10\n\x12\x1f\n\x1bINTER_SWITCH_LINK_MGMT_INIT\x10\x0b\x12\'\n#CONFLICTING_OR_MISSING_DEVICE_ROLES\x10\x0c\x12\x1a\n\x16INTER_SWITCH_LINK_DOWN\x10\r\x12\x12\n\x0eINTERNAL_ERROR\x10\x0e*)\n\x06\x41\x63tion\x12\x07\n\x03\x41\x44\x44\x10\x01\x12\n\n\x06\x44\x45LETE\x10\x02\x12\n\n\x06UPDATE\x10\x03*\x1a\n\x06Status\x12\x06\n\x02UP\x10\x01\x12\x08\n\x04\x44OWN\x10\x02*&\n\x0bTunnelIndex\x12\x0b\n\x07PRIMARY\x10\x00\x12\n\n\x06\x42\x41\x43KUP\x10\x01*\"\n\nCryptoType\x12\x0b\n\x07\x43\x41_CERT\x10\x00\x12\x07\n\x03PSK\x10\x01*\xa3\x05\n\x0b\x44\x61taElement\x12\x14\n\x10STATE_CONTROLLER\x10\x01\x12\x10\n\x0cSTATE_SWITCH\x10\x02\x12\x0f\n\x0bSTATE_SWARM\x10\x03\x12\x0c\n\x08STATE_AP\x10\x04\x12\r\n\tSTATE_VAP\x10\x05\x12\x0f\n\x0bSTATE_RADIO\x10\x06\x12\x13\n\x0fSTATE_INTERFACE\x10\x07\x12\x11\n\rSTATE_NETWORK\x10\x08\x12\x10\n\x0cSTATE_TUNNEL\x10\t\x12\x18\n\x14STATE_WIRELESSCLIENT\x10\n\x12\x15\n\x11STATE_WIREDCLIENT\x10\x0b\x12\x10\n\x0cSTATE_UPLINK\x10\x0c\x12\x0f\n\x0bSTAT_DEVICE\x10\r\x12\x0e\n\nSTAT_RADIO\x10\x0e\x12\x0c\n\x08STAT_VAP\x10\x0f\x12\x12\n\x0eSTAT_INTERFACE\x10\x10\x12\x0f\n\x0bSTAT_CLIENT\x10\x11\x12\x0f\n\x0bSTAT_TUNNEL\x10\x12\x12\x0e\n\nSTAT_MODEM\x10\x13\x12\r\n\tSTAT_ROLE\x10\x14\x12\r\n\tSTAT_VLAN\x10\x15\x12\r\n\tSTAT_SSID\x10\x16\x12\x10\n\x0cSTAT_IPPROBE\x10\x17\x12\x0f\n\x0bSTAT_UPLINK\x10\x18\x12\x12\n\x0eSTAT_UPLINKWAN\x10\x19\x12\x16\n\x12STAT_UPLINKIPPROBE\x10\x1a\x12\x0f\n\x0b\x45VENTS_WIDS\x10\x1b\x12\x10\n\x0c\x45VENTS_ROGUE\x10\x1c\x12\x1a\n\x16STATS_UPLINK_SPEEDTEST\x10\x1d\x12\x15\n\x11\x44\x45VICE_NEIGHBOURS\x10\x1e\x12\x11\n\rNOTIFICATIONS\x10\x1f\x12\x10\n\x0cSWITCH_STACK\x10 \x12\x14\n\x10STATE_IKE_TUNNEL\x10!\x12\x0f\n\x0bSWITCH_VLAN\x10\"\x12\x0e\n\nSTATE_VLAN\x10#\x12\r\n\tSTATE_VSX\x10$*\xb0\x06\n\x08\x41uthType\x12\x08\n\x04NONE\x10\x01\x12\x0c\n\x08MAC_AUTH\x10\x02\x12\x0e\n\nDOT1X_AUTH\x10\x03\x12\x0b\n\x07L3_AUTH\x10\x04\x12\x10\n\x0c\x43ONSOLE_AUTH\x10\x05\x12\x0f\n\x0bTELNET_AUTH\x10\x06\x12\x0e\n\nWEBUI_AUTH\x10\x07\x12\x0c\n\x08SSH_AUTH\x10\x08\x12\x0c\n\x08WEB_AUTH\x10\t\x12\r\n\tSNMP_AUTH\x10\n\x12\x11\n\rSSH_NONE_AUTH\x10\x0b\x12\x0c\n\x08LMA_AUTH\x10\x0c\x12\x0c\n\x08\x41NY_AUTH\x10\r\x12\x12\n\x0e\x43\x41PTIVE_PORTAL\x10\x0e\x12\x0c\n\x08VPN_AUTH\x10\x0f\x12\x15\n\x11STATEFUL_KERBEROS\x10\x10\x12\x15\n\x11RADIUS_ACCOUNTING\x10\x11\x12\r\n\tSECURE_ID\x10\x12\x12\x13\n\x0fSTATEFUL_RADIUS\x10\x13\x12\x15\n\x11SWITCH_MANAGEMENT\x10\x14\x12\x11\n\rDOT1X_MACHINE\x10\x15\x12\x0e\n\nDOT1X_USER\x10\x16\x12\x0f\n\x0b\x44OT1X_WIRED\x10\x17\x12\x17\n\x13\x44OT1X_WIRED_MACHINE\x10\x18\x12\x14\n\x10\x44OT1X_WIRED_USER\x10\x19\x12\x0e\n\nPUB_COOKIE\x10\x1a\x12\x10\n\x0cTACACAS_PLUS\x10\x1b\x12\x11\n\rWIRELESS_XSEC\x10\x1c\x12\x19\n\x15WIRELESS_XSEC_MACHINE\x10\x1d\x12\x16\n\x12WIRELESS_XSEC_USER\x10\x1e\x12\x17\n\x13WIRELESS_XSEC_WIRED\x10\x1f\x12\x1f\n\x1bWIRELESS_XSEC_WIRED_MACHINE\x10 \x12\x1c\n\x18WIRELESS_XSEC_WIRED_USER\x10!\x12\x11\n\rSTATEFUL_NTLM\x10\"\x12\n\n\x06RAP_AP\x10#\x12\x0b\n\x07VIA_WEB\x10$\x12\x1a\n\x16GENERIC_INTERFACE_SPEC\x10%\x12\x11\n\rTRANSPORT_VPN\x10&\x12\x0b\n\x07VIA_VPN\x10\'\x12\x0e\n\nPUTN_DOT1X\x10(\x12\x0c\n\x08PUTN_MAC\x10)\x12\x0b\n\x07PUTN_CP\x10*\x12\x0c\n\x08PUTN_LMA\x10+\x12\x13\n\x0fNUM_AUTH_CLIENT\x10,') | ||
@@ -35,154 +33,154 @@ | ||
| DESCRIPTOR._loaded_options = None | ||
| _globals['_ACTION']._serialized_start=19193 | ||
| _globals['_ACTION']._serialized_end=19234 | ||
| _globals['_STATUS']._serialized_start=19236 | ||
| _globals['_STATUS']._serialized_end=19262 | ||
| _globals['_TUNNELINDEX']._serialized_start=19264 | ||
| _globals['_TUNNELINDEX']._serialized_end=19302 | ||
| _globals['_CRYPTOTYPE']._serialized_start=19304 | ||
| _globals['_CRYPTOTYPE']._serialized_end=19338 | ||
| _globals['_DATAELEMENT']._serialized_start=19341 | ||
| _globals['_DATAELEMENT']._serialized_end=20016 | ||
| _globals['_AUTHTYPE']._serialized_start=20019 | ||
| _globals['_AUTHTYPE']._serialized_end=20835 | ||
| _globals['_IPADDRESS']._serialized_start=33 | ||
| _globals['_IPADDRESS']._serialized_end=165 | ||
| _globals['_IPADDRESS_ADDR_FAMILY']._serialized_start=107 | ||
| _globals['_IPADDRESS_ADDR_FAMILY']._serialized_end=165 | ||
| _globals['_MACADDRESS']._serialized_start=167 | ||
| _globals['_MACADDRESS']._serialized_end=193 | ||
| _globals['_SWARM']._serialized_start=196 | ||
| _globals['_SWARM']._serialized_end=438 | ||
| _globals['_TUNNEL']._serialized_start=441 | ||
| _globals['_TUNNEL']._serialized_end=792 | ||
| _globals['_INTERFACE']._serialized_start=795 | ||
| _globals['_INTERFACE']._serialized_end=2652 | ||
| _globals['_INTERFACE_DUPLEX']._serialized_start=1680 | ||
| _globals['_INTERFACE_DUPLEX']._serialized_end=1718 | ||
| _globals['_INTERFACE_INTFTYPE']._serialized_start=1721 | ||
| _globals['_INTERFACE_INTFTYPE']._serialized_end=1866 | ||
| _globals['_INTERFACE_SPEEDTYPE']._serialized_start=1868 | ||
| _globals['_INTERFACE_SPEEDTYPE']._serialized_end=1976 | ||
| _globals['_INTERFACE_PORTTYPE']._serialized_start=1978 | ||
| _globals['_INTERFACE_PORTTYPE']._serialized_end=2052 | ||
| _globals['_INTERFACE_POESUPPORT']._serialized_start=2054 | ||
| _globals['_INTERFACE_POESUPPORT']._serialized_end=2108 | ||
| _globals['_INTERFACE_STATEDOWNREASON']._serialized_start=2111 | ||
| _globals['_INTERFACE_STATEDOWNREASON']._serialized_end=2587 | ||
| _globals['_INTERFACE_VLANMODES']._serialized_start=2589 | ||
| _globals['_INTERFACE_VLANMODES']._serialized_end=2652 | ||
| _globals['_VAPINFO']._serialized_start=2655 | ||
| _globals['_VAPINFO']._serialized_end=2864 | ||
| _globals['_RADIO']._serialized_start=2867 | ||
| _globals['_RADIO']._serialized_end=3127 | ||
| _globals['_AP']._serialized_start=3130 | ||
| _globals['_AP']._serialized_end=3583 | ||
| _globals['_AP_UPLINKTYPE']._serialized_start=3523 | ||
| _globals['_AP_UPLINKTYPE']._serialized_end=3583 | ||
| _globals['_NETWORK']._serialized_start=3585 | ||
| _globals['_NETWORK']._serialized_end=3703 | ||
| _globals['_WIRELESSCLIENT']._serialized_start=3706 | ||
| _globals['_WIRELESSCLIENT']._serialized_end=4079 | ||
| _globals['_HARDWAREMODULE']._serialized_start=4082 | ||
| _globals['_HARDWAREMODULE']._serialized_end=4266 | ||
| _globals['_HARDWAREMODULE_HARDWARESTATUS']._serialized_start=4174 | ||
| _globals['_HARDWAREMODULE_HARDWARESTATUS']._serialized_end=4266 | ||
| _globals['_SWITCH']._serialized_start=4269 | ||
| _globals['_SWITCH']._serialized_end=5029 | ||
| _globals['_SWITCH_STACKMEMBERROLE']._serialized_start=4959 | ||
| _globals['_SWITCH_STACKMEMBERROLE']._serialized_end=5029 | ||
| _globals['_SWITCHSTACK']._serialized_start=5032 | ||
| _globals['_SWITCHSTACK']._serialized_end=5508 | ||
| _globals['_SWITCHSTACK_STACKTOPOLOGY']._serialized_start=5308 | ||
| _globals['_SWITCHSTACK_STACKTOPOLOGY']._serialized_end=5401 | ||
| _globals['_SWITCHSTACK_STACKPOLICY']._serialized_start=5403 | ||
| _globals['_SWITCHSTACK_STACKPOLICY']._serialized_end=5508 | ||
| _globals['_WIREDCLIENT']._serialized_start=5511 | ||
| _globals['_WIREDCLIENT']._serialized_end=5832 | ||
| _globals['_MOBILITYCONTROLLER']._serialized_start=5835 | ||
| _globals['_MOBILITYCONTROLLER']._serialized_end=6294 | ||
| _globals['_MOBILITYCONTROLLER_CONTROLLERMODE']._serialized_start=6255 | ||
| _globals['_MOBILITYCONTROLLER_CONTROLLERMODE']._serialized_end=6294 | ||
| _globals['_UPLINK']._serialized_start=6297 | ||
| _globals['_UPLINK']._serialized_end=6658 | ||
| _globals['_IKETUNNEL']._serialized_start=6661 | ||
| _globals['_IKETUNNEL']._serialized_end=6968 | ||
| _globals['_DEVICESTATS']._serialized_start=6971 | ||
| _globals['_DEVICESTATS']._serialized_end=7296 | ||
| _globals['_RADIOSTATS']._serialized_start=7299 | ||
| _globals['_RADIOSTATS']._serialized_end=7520 | ||
| _globals['_VAPSTATS']._serialized_start=7523 | ||
| _globals['_VAPSTATS']._serialized_end=7667 | ||
| _globals['_TUNNELSTATS']._serialized_start=7670 | ||
| _globals['_TUNNELSTATS']._serialized_end=7855 | ||
| _globals['_CLIENTSTATS']._serialized_start=7858 | ||
| _globals['_CLIENTSTATS']._serialized_end=8076 | ||
| _globals['_INTERFACESTATS']._serialized_start=8079 | ||
| _globals['_INTERFACESTATS']._serialized_end=8759 | ||
| _globals['_UPLINKSTATS']._serialized_start=8762 | ||
| _globals['_UPLINKSTATS']._serialized_end=8950 | ||
| _globals['_UPLINKWANSTATS']._serialized_start=8953 | ||
| _globals['_UPLINKWANSTATS']._serialized_end=9101 | ||
| _globals['_MODEMSTATS']._serialized_start=9103 | ||
| _globals['_MODEMSTATS']._serialized_end=9189 | ||
| _globals['_ROLESTATS']._serialized_start=9191 | ||
| _globals['_ROLESTATS']._serialized_end=9295 | ||
| _globals['_VLANSTATS']._serialized_start=9297 | ||
| _globals['_VLANSTATS']._serialized_end=9396 | ||
| _globals['_SSIDSTATS']._serialized_start=9398 | ||
| _globals['_SSIDSTATS']._serialized_end=9498 | ||
| _globals['_TUNNELIPPROBESTATS']._serialized_start=9501 | ||
| _globals['_TUNNELIPPROBESTATS']._serialized_end=9726 | ||
| _globals['_UPLINKIPPROBESTATS']._serialized_start=9729 | ||
| _globals['_UPLINKIPPROBESTATS']._serialized_end=10464 | ||
| _globals['_UPLINKSPEEDTEST']._serialized_start=10467 | ||
| _globals['_UPLINKSPEEDTEST']._serialized_end=10694 | ||
| _globals['_WIDSEVENT']._serialized_start=10697 | ||
| _globals['_WIDSEVENT']._serialized_end=12507 | ||
| _globals['_WIDSEVENT_EVENTTYPE']._serialized_start=10958 | ||
| _globals['_WIDSEVENT_EVENTTYPE']._serialized_end=11043 | ||
| _globals['_WIDSEVENT_ATTACKTYPE']._serialized_start=11046 | ||
| _globals['_WIDSEVENT_ATTACKTYPE']._serialized_end=12507 | ||
| _globals['_AIRMONITORROGUEINFO']._serialized_start=12510 | ||
| _globals['_AIRMONITORROGUEINFO']._serialized_end=13243 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_MATCH_TYPE']._serialized_start=12792 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_MATCH_TYPE']._serialized_end=13118 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_NAT_MATCH_TYPE']._serialized_start=13120 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_NAT_MATCH_TYPE']._serialized_end=13243 | ||
| _globals['_ROGUEEVENT']._serialized_start=13246 | ||
| _globals['_ROGUEEVENT']._serialized_end=13649 | ||
| _globals['_ROGUEEVENT_WMS_SNMP_ENCR_PROTOCOL']._serialized_start=13515 | ||
| _globals['_ROGUEEVENT_WMS_SNMP_ENCR_PROTOCOL']._serialized_end=13649 | ||
| _globals['_DEVICENEIGHBOURS']._serialized_start=13652 | ||
| _globals['_DEVICENEIGHBOURS']._serialized_end=13839 | ||
| _globals['_MONITORINGINFORMATION']._serialized_start=13842 | ||
| _globals['_MONITORINGINFORMATION']._serialized_end=15579 | ||
| _globals['_MONITORINGSTATEINFORMATION']._serialized_start=15582 | ||
| _globals['_MONITORINGSTATEINFORMATION']._serialized_end=16282 | ||
| _globals['_KEYVALUEDATA']._serialized_start=16284 | ||
| _globals['_KEYVALUEDATA']._serialized_end=16326 | ||
| _globals['_NOTIFICATION']._serialized_start=16329 | ||
| _globals['_NOTIFICATION']._serialized_end=16716 | ||
| _globals['_NOTIFICATION_SEVERITY']._serialized_start=16603 | ||
| _globals['_NOTIFICATION_SEVERITY']._serialized_end=16674 | ||
| _globals['_NOTIFICATION_NOTIFICATIONSTATE']._serialized_start=16676 | ||
| _globals['_NOTIFICATION_NOTIFICATIONSTATE']._serialized_end=16716 | ||
| _globals['_SWITCHVLANINFO']._serialized_start=16718 | ||
| _globals['_SWITCHVLANINFO']._serialized_end=16792 | ||
| _globals['_SWITCHVLAN']._serialized_start=16795 | ||
| _globals['_SWITCHVLAN']._serialized_end=17367 | ||
| _globals['_SWITCHVLAN_VLANSTATUS']._serialized_start=17273 | ||
| _globals['_SWITCHVLAN_VLANSTATUS']._serialized_end=17303 | ||
| _globals['_SWITCHVLAN_VLANTYPE']._serialized_start=17305 | ||
| _globals['_SWITCHVLAN_VLANTYPE']._serialized_end=17367 | ||
| _globals['_VLAN']._serialized_start=17370 | ||
| _globals['_VLAN']._serialized_end=17790 | ||
| _globals['_VSXSTATE']._serialized_start=17793 | ||
| _globals['_VSXSTATE']._serialized_end=19191 | ||
| _globals['_VSXSTATE_DEVICEROLE']._serialized_start=18561 | ||
| _globals['_VSXSTATE_DEVICEROLE']._serialized_end=18601 | ||
| _globals['_VSXSTATE_ISLPDEVICESTATE']._serialized_start=18604 | ||
| _globals['_VSXSTATE_ISLPDEVICESTATE']._serialized_end=18790 | ||
| _globals['_VSXSTATE_ISLSTATE']._serialized_start=18793 | ||
| _globals['_VSXSTATE_ISLSTATE']._serialized_end=19191 | ||
| _globals['_ACTION']._serialized_start = 19193 | ||
| _globals['_ACTION']._serialized_end = 19234 | ||
| _globals['_STATUS']._serialized_start = 19236 | ||
| _globals['_STATUS']._serialized_end = 19262 | ||
| _globals['_TUNNELINDEX']._serialized_start = 19264 | ||
| _globals['_TUNNELINDEX']._serialized_end = 19302 | ||
| _globals['_CRYPTOTYPE']._serialized_start = 19304 | ||
| _globals['_CRYPTOTYPE']._serialized_end = 19338 | ||
| _globals['_DATAELEMENT']._serialized_start = 19341 | ||
| _globals['_DATAELEMENT']._serialized_end = 20016 | ||
| _globals['_AUTHTYPE']._serialized_start = 20019 | ||
| _globals['_AUTHTYPE']._serialized_end = 20835 | ||
| _globals['_IPADDRESS']._serialized_start = 33 | ||
| _globals['_IPADDRESS']._serialized_end = 165 | ||
| _globals['_IPADDRESS_ADDR_FAMILY']._serialized_start = 107 | ||
| _globals['_IPADDRESS_ADDR_FAMILY']._serialized_end = 165 | ||
| _globals['_MACADDRESS']._serialized_start = 167 | ||
| _globals['_MACADDRESS']._serialized_end = 193 | ||
| _globals['_SWARM']._serialized_start = 196 | ||
| _globals['_SWARM']._serialized_end = 438 | ||
| _globals['_TUNNEL']._serialized_start = 441 | ||
| _globals['_TUNNEL']._serialized_end = 792 | ||
| _globals['_INTERFACE']._serialized_start = 795 | ||
| _globals['_INTERFACE']._serialized_end = 2652 | ||
| _globals['_INTERFACE_DUPLEX']._serialized_start = 1680 | ||
| _globals['_INTERFACE_DUPLEX']._serialized_end = 1718 | ||
| _globals['_INTERFACE_INTFTYPE']._serialized_start = 1721 | ||
| _globals['_INTERFACE_INTFTYPE']._serialized_end = 1866 | ||
| _globals['_INTERFACE_SPEEDTYPE']._serialized_start = 1868 | ||
| _globals['_INTERFACE_SPEEDTYPE']._serialized_end = 1976 | ||
| _globals['_INTERFACE_PORTTYPE']._serialized_start = 1978 | ||
| _globals['_INTERFACE_PORTTYPE']._serialized_end = 2052 | ||
| _globals['_INTERFACE_POESUPPORT']._serialized_start = 2054 | ||
| _globals['_INTERFACE_POESUPPORT']._serialized_end = 2108 | ||
| _globals['_INTERFACE_STATEDOWNREASON']._serialized_start = 2111 | ||
| _globals['_INTERFACE_STATEDOWNREASON']._serialized_end = 2587 | ||
| _globals['_INTERFACE_VLANMODES']._serialized_start = 2589 | ||
| _globals['_INTERFACE_VLANMODES']._serialized_end = 2652 | ||
| _globals['_VAPINFO']._serialized_start = 2655 | ||
| _globals['_VAPINFO']._serialized_end = 2864 | ||
| _globals['_RADIO']._serialized_start = 2867 | ||
| _globals['_RADIO']._serialized_end = 3127 | ||
| _globals['_AP']._serialized_start = 3130 | ||
| _globals['_AP']._serialized_end = 3583 | ||
| _globals['_AP_UPLINKTYPE']._serialized_start = 3523 | ||
| _globals['_AP_UPLINKTYPE']._serialized_end = 3583 | ||
| _globals['_NETWORK']._serialized_start = 3585 | ||
| _globals['_NETWORK']._serialized_end = 3703 | ||
| _globals['_WIRELESSCLIENT']._serialized_start = 3706 | ||
| _globals['_WIRELESSCLIENT']._serialized_end = 4079 | ||
| _globals['_HARDWAREMODULE']._serialized_start = 4082 | ||
| _globals['_HARDWAREMODULE']._serialized_end = 4266 | ||
| _globals['_HARDWAREMODULE_HARDWARESTATUS']._serialized_start = 4174 | ||
| _globals['_HARDWAREMODULE_HARDWARESTATUS']._serialized_end = 4266 | ||
| _globals['_SWITCH']._serialized_start = 4269 | ||
| _globals['_SWITCH']._serialized_end = 5029 | ||
| _globals['_SWITCH_STACKMEMBERROLE']._serialized_start = 4959 | ||
| _globals['_SWITCH_STACKMEMBERROLE']._serialized_end = 5029 | ||
| _globals['_SWITCHSTACK']._serialized_start = 5032 | ||
| _globals['_SWITCHSTACK']._serialized_end = 5508 | ||
| _globals['_SWITCHSTACK_STACKTOPOLOGY']._serialized_start = 5308 | ||
| _globals['_SWITCHSTACK_STACKTOPOLOGY']._serialized_end = 5401 | ||
| _globals['_SWITCHSTACK_STACKPOLICY']._serialized_start = 5403 | ||
| _globals['_SWITCHSTACK_STACKPOLICY']._serialized_end = 5508 | ||
| _globals['_WIREDCLIENT']._serialized_start = 5511 | ||
| _globals['_WIREDCLIENT']._serialized_end = 5832 | ||
| _globals['_MOBILITYCONTROLLER']._serialized_start = 5835 | ||
| _globals['_MOBILITYCONTROLLER']._serialized_end = 6294 | ||
| _globals['_MOBILITYCONTROLLER_CONTROLLERMODE']._serialized_start = 6255 | ||
| _globals['_MOBILITYCONTROLLER_CONTROLLERMODE']._serialized_end = 6294 | ||
| _globals['_UPLINK']._serialized_start = 6297 | ||
| _globals['_UPLINK']._serialized_end = 6658 | ||
| _globals['_IKETUNNEL']._serialized_start = 6661 | ||
| _globals['_IKETUNNEL']._serialized_end = 6968 | ||
| _globals['_DEVICESTATS']._serialized_start = 6971 | ||
| _globals['_DEVICESTATS']._serialized_end = 7296 | ||
| _globals['_RADIOSTATS']._serialized_start = 7299 | ||
| _globals['_RADIOSTATS']._serialized_end = 7520 | ||
| _globals['_VAPSTATS']._serialized_start = 7523 | ||
| _globals['_VAPSTATS']._serialized_end = 7667 | ||
| _globals['_TUNNELSTATS']._serialized_start = 7670 | ||
| _globals['_TUNNELSTATS']._serialized_end = 7855 | ||
| _globals['_CLIENTSTATS']._serialized_start = 7858 | ||
| _globals['_CLIENTSTATS']._serialized_end = 8076 | ||
| _globals['_INTERFACESTATS']._serialized_start = 8079 | ||
| _globals['_INTERFACESTATS']._serialized_end = 8759 | ||
| _globals['_UPLINKSTATS']._serialized_start = 8762 | ||
| _globals['_UPLINKSTATS']._serialized_end = 8950 | ||
| _globals['_UPLINKWANSTATS']._serialized_start = 8953 | ||
| _globals['_UPLINKWANSTATS']._serialized_end = 9101 | ||
| _globals['_MODEMSTATS']._serialized_start = 9103 | ||
| _globals['_MODEMSTATS']._serialized_end = 9189 | ||
| _globals['_ROLESTATS']._serialized_start = 9191 | ||
| _globals['_ROLESTATS']._serialized_end = 9295 | ||
| _globals['_VLANSTATS']._serialized_start = 9297 | ||
| _globals['_VLANSTATS']._serialized_end = 9396 | ||
| _globals['_SSIDSTATS']._serialized_start = 9398 | ||
| _globals['_SSIDSTATS']._serialized_end = 9498 | ||
| _globals['_TUNNELIPPROBESTATS']._serialized_start = 9501 | ||
| _globals['_TUNNELIPPROBESTATS']._serialized_end = 9726 | ||
| _globals['_UPLINKIPPROBESTATS']._serialized_start = 9729 | ||
| _globals['_UPLINKIPPROBESTATS']._serialized_end = 10464 | ||
| _globals['_UPLINKSPEEDTEST']._serialized_start = 10467 | ||
| _globals['_UPLINKSPEEDTEST']._serialized_end = 10694 | ||
| _globals['_WIDSEVENT']._serialized_start = 10697 | ||
| _globals['_WIDSEVENT']._serialized_end = 12507 | ||
| _globals['_WIDSEVENT_EVENTTYPE']._serialized_start = 10958 | ||
| _globals['_WIDSEVENT_EVENTTYPE']._serialized_end = 11043 | ||
| _globals['_WIDSEVENT_ATTACKTYPE']._serialized_start = 11046 | ||
| _globals['_WIDSEVENT_ATTACKTYPE']._serialized_end = 12507 | ||
| _globals['_AIRMONITORROGUEINFO']._serialized_start = 12510 | ||
| _globals['_AIRMONITORROGUEINFO']._serialized_end = 13243 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_MATCH_TYPE']._serialized_start = 12792 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_MATCH_TYPE']._serialized_end = 13118 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_NAT_MATCH_TYPE']._serialized_start = 13120 | ||
| _globals['_AIRMONITORROGUEINFO_WMS_RAP_NAT_MATCH_TYPE']._serialized_end = 13243 | ||
| _globals['_ROGUEEVENT']._serialized_start = 13246 | ||
| _globals['_ROGUEEVENT']._serialized_end = 13649 | ||
| _globals['_ROGUEEVENT_WMS_SNMP_ENCR_PROTOCOL']._serialized_start = 13515 | ||
| _globals['_ROGUEEVENT_WMS_SNMP_ENCR_PROTOCOL']._serialized_end = 13649 | ||
| _globals['_DEVICENEIGHBOURS']._serialized_start = 13652 | ||
| _globals['_DEVICENEIGHBOURS']._serialized_end = 13839 | ||
| _globals['_MONITORINGINFORMATION']._serialized_start = 13842 | ||
| _globals['_MONITORINGINFORMATION']._serialized_end = 15579 | ||
| _globals['_MONITORINGSTATEINFORMATION']._serialized_start = 15582 | ||
| _globals['_MONITORINGSTATEINFORMATION']._serialized_end = 16282 | ||
| _globals['_KEYVALUEDATA']._serialized_start = 16284 | ||
| _globals['_KEYVALUEDATA']._serialized_end = 16326 | ||
| _globals['_NOTIFICATION']._serialized_start = 16329 | ||
| _globals['_NOTIFICATION']._serialized_end = 16716 | ||
| _globals['_NOTIFICATION_SEVERITY']._serialized_start = 16603 | ||
| _globals['_NOTIFICATION_SEVERITY']._serialized_end = 16674 | ||
| _globals['_NOTIFICATION_NOTIFICATIONSTATE']._serialized_start = 16676 | ||
| _globals['_NOTIFICATION_NOTIFICATIONSTATE']._serialized_end = 16716 | ||
| _globals['_SWITCHVLANINFO']._serialized_start = 16718 | ||
| _globals['_SWITCHVLANINFO']._serialized_end = 16792 | ||
| _globals['_SWITCHVLAN']._serialized_start = 16795 | ||
| _globals['_SWITCHVLAN']._serialized_end = 17367 | ||
| _globals['_SWITCHVLAN_VLANSTATUS']._serialized_start = 17273 | ||
| _globals['_SWITCHVLAN_VLANSTATUS']._serialized_end = 17303 | ||
| _globals['_SWITCHVLAN_VLANTYPE']._serialized_start = 17305 | ||
| _globals['_SWITCHVLAN_VLANTYPE']._serialized_end = 17367 | ||
| _globals['_VLAN']._serialized_start = 17370 | ||
| _globals['_VLAN']._serialized_end = 17790 | ||
| _globals['_VSXSTATE']._serialized_start = 17793 | ||
| _globals['_VSXSTATE']._serialized_end = 19191 | ||
| _globals['_VSXSTATE_DEVICEROLE']._serialized_start = 18561 | ||
| _globals['_VSXSTATE_DEVICEROLE']._serialized_end = 18601 | ||
| _globals['_VSXSTATE_ISLPDEVICESTATE']._serialized_start = 18604 | ||
| _globals['_VSXSTATE_ISLPDEVICESTATE']._serialized_end = 18790 | ||
| _globals['_VSXSTATE_ISLSTATE']._serialized_start = 18793 | ||
| _globals['_VSXSTATE_ISLSTATE']._serialized_end = 19191 | ||
| # @@protoc_insertion_point(module_scope) |
@@ -25,4 +25,2 @@ # -*- coding: utf-8 -*- | ||
| DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x0fstreaming.proto\x12\rStreamMessage\"a\n\x08MsgProto\x12\x0f\n\x07subject\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\x12\x11\n\ttimestamp\x18\x04 \x01(\x03\x12\x13\n\x0b\x63ustomer_id\x18\x05 \x01(\t\x12\x0e\n\x06msp_id\x18\x06 \x01(\tb\x06proto3') | ||
@@ -35,4 +33,4 @@ | ||
| DESCRIPTOR._loaded_options = None | ||
| _globals['_MSGPROTO']._serialized_start=34 | ||
| _globals['_MSGPROTO']._serialized_end=131 | ||
| _globals['_MSGPROTO']._serialized_start = 34 | ||
| _globals['_MSGPROTO']._serialized_end = 131 | ||
| # @@protoc_insertion_point(module_scope) |
+25
-12
@@ -85,2 +85,3 @@ #!/usr/bin/env python3 | ||
| tty = TTY() | ||
@@ -112,3 +113,3 @@ | ||
| ): | ||
| if not hasattr(self, '_initialized'): # Prevent re-initialization | ||
| if not hasattr(self, '_initialized'): # Prevent re-initialization | ||
| super().__init__(status, console=console, spinner=spinner, spinner_style=spinner_style, speed=speed, refresh_per_second=refresh_per_second) | ||
@@ -160,2 +161,3 @@ else: | ||
| # TODO Partial support for sending rich.Text needs to cleaned up and make all output returned to display_results rich.text, use console.print vs typer.echo in display_results | ||
@@ -275,14 +277,16 @@ # Output class can likely be elliminated and return rich.Text from render.output | ||
| def _batch_invalid_msg(usage: str, provide: str = None) -> str: # referenced in the batch cli modules | ||
| usage = escape(usage) | ||
| provide = provide or "Provide [bright_green]IMPORT_FILE[/] or [cyan]--example[/]" | ||
| _msg = [ | ||
| "Invalid combination of arguments / options.", | ||
| provide, | ||
| "", | ||
| f"[yellow]Usage[/]: {usage}", | ||
| f"Use [cyan]{usage.split(' [')[0].split('-')[0].rstrip()} --help[/] for help.", | ||
| ] | ||
| return "\n".join(_msg) | ||
| usage = escape(usage) | ||
| provide = provide or "Provide [bright_green]IMPORT_FILE[/] or [cyan]--example[/]" | ||
| _msg = [ | ||
| "Invalid combination of arguments / options.", | ||
| provide, | ||
| "", | ||
| f"[yellow]Usage[/]: {usage}", | ||
| f"Use [cyan]{usage.split(' [')[0].split('-')[0].rstrip()} --help[/] for help.", | ||
| ] | ||
| return "\n".join(_msg) | ||
| def write_file(outfile: Path, outdata: str) -> None: # pragma: no cover this function is mocked | ||
@@ -340,2 +344,3 @@ """Output data to file | ||
| def _do_subtables(data: List[dict], *, tablefmt: str = "rich") -> List[dict]: | ||
@@ -394,2 +399,3 @@ """Parse data and format any values that are dict, list, tuple | ||
| def tabulate_output(outdata: List[dict]) -> tuple: | ||
@@ -422,2 +428,3 @@ customer_id = customer_name = "" | ||
| def build_rich_table_rows(data: List[Dict[str, Text | str]], table: Table, group_by: str) -> Table: | ||
@@ -648,2 +655,3 @@ if not group_by: | ||
| return str(value) if "," not in str(value) else f'"{value}"' | ||
| def normalize_key_for_csv(key: str) -> str: | ||
@@ -702,3 +710,3 @@ if not isinstance(key, str): | ||
| if isinstance(raw_data, str): # HACK replace first pass is to line up cols but if table is tighter second pass will swap them regardless | ||
| raw_data = raw_data.replace('✅ ', 'True').replace('❌ ', 'False').replace('✅', 'True').replace('❌', 'False') # TODO handle this better | ||
| raw_data = raw_data.replace('✅ ', 'True').replace('❌ ', 'False').replace('✅', 'True').replace('❌', 'False') # TODO handle this better | ||
@@ -723,2 +731,3 @@ return Output(rawdata=raw_data, prettydata=table_data, config=config, tablefmt=tablefmt) | ||
| con = rich_console or econsole | ||
| def abort(): | ||
@@ -760,2 +769,3 @@ con.print("\n[dark_orange3]:warning:[/] [red]Aborted[/]", emoji=True) | ||
| def pause(prompt: str = "Press Enter to Continue", *, rich_console: Console = None) -> None: # pragma: no cover | ||
@@ -766,2 +776,3 @@ rich_console = rich_console or econsole | ||
| def rich_capture(text: str | List[str], emoji: bool = False, **kwargs) -> str: | ||
@@ -789,2 +800,3 @@ """Accept text or list of text with rich markups and return final colorized text with ascii control chars | ||
| def unstyle(text: str | List[str], emoji: bool = False, **kwargs) -> str: | ||
@@ -808,2 +820,3 @@ """Accept text or list of text. Removes any markups or ascii color codes from text | ||
| def help_block(default_txt: str, help_type: Literal["default", "requires"] = "default") -> str: | ||
@@ -810,0 +823,0 @@ """Helper function that returns properly escaped default text, including rich color markup, for use in CLI help. |
@@ -44,3 +44,3 @@ #!/usr/bin/env python3 | ||
| self.remain_day = int(f"{rh.get('X-RateLimit-Remaining-day', 0)}") | ||
| #glp | ||
| # glp | ||
| self.total_min = int(f"{rh.get('ratelimit-limit', 0)}") # glp | ||
@@ -130,2 +130,3 @@ self.remain_min = int(f"{rh.get('ratelimit-remaining', 0)}") # glp | ||
| class Response: | ||
@@ -322,3 +323,2 @@ '''wrapper ClientResponse object | ||
| def __bool__(self): | ||
@@ -399,3 +399,2 @@ if self._ok is not None: | ||
| def __repr__(self): # pragma: no cover | ||
@@ -525,3 +524,3 @@ _exit_code_str = "" if not self.exit_code else f"|exit code: {self.exit_code}" | ||
| def __len__(self): | ||
| return(len(self.output)) if not isinstance(self.output, str) else 0 | ||
| return (len(self.output)) if not isinstance(self.output, str) else 0 | ||
@@ -599,3 +598,2 @@ def __getitem__(self, key): | ||
| if isinstance(self.output, list) and isinstance(other.output, list): | ||
@@ -728,3 +726,2 @@ self.output += other.output | ||
| class CombinedResponse(Response): | ||
@@ -767,3 +764,2 @@ def flatten_resp(responses: List[Response]) -> Response: | ||
| # for combining device calls, adds consistent "type" to all devices | ||
@@ -770,0 +766,0 @@ def _get_type(data: dict) -> Literal["ap", "gw", "sw", "cx"] | None: |
+20
-13
@@ -131,3 +131,2 @@ #!/usr/bin/env python3 | ||
| def __str__(self): | ||
@@ -155,2 +154,3 @@ return "\n".join(self.list) | ||
| class Example: | ||
@@ -212,2 +212,3 @@ """ | ||
| bool_strings = ["true", "false", "yes", "no"] | ||
| def _convert_bool(value: str, expecting_list: bool = False) -> str | bool | int | list: | ||
@@ -245,5 +246,5 @@ if expecting_list: | ||
| def header(self): | ||
| header = ["Accepts the following keys (include as header row for csv import):"] | ||
| header = ["Accepts the following keys (include as header row for csv import):"] | ||
| field_dict = FIELDS[self.action] | ||
| required_strings = utils.color(field_dict[self.type]["required"], "red") | ||
| required_strings = utils.color(field_dict[self.type]["required"], "red") | ||
| header += [f' {required_strings}'] | ||
@@ -304,3 +305,2 @@ # if field_dict[self.type].get("optional"): # currently all defined have optional fields | ||
| common_add_delete_end = """ | ||
@@ -353,3 +353,3 @@ [italic]:information: Batch add and batch delete operations are designed so the same import file can be used.[/] | ||
| # -- // MOVE DEVICES \\ -- | ||
| device_move_data=""" | ||
| device_move_data = """ | ||
| serial,mac,group,site,label,retain_config | ||
@@ -375,3 +375,3 @@ CN12345678,aabbccddeeff,phl-access,snantx-1201,,false | ||
| # -- // RENAME DEVICES \\ -- | ||
| data=""" | ||
| data = """ | ||
| serial,hostname | ||
@@ -419,3 +419,3 @@ CN12345678,barn.615.ab12 | ||
| ] | ||
| data=f""" | ||
| data = f""" | ||
| {','.join(fields)} | ||
@@ -498,3 +498,3 @@ CN12345678,barn.615.ab12,,,,,consolepi.com,2.4,,,,,,,,,, | ||
| [italic]:information: Provide address fields, or geo-location ({utils.color(['longitude' ,'latitude'])}) [red]not both[/]. | ||
| [italic]:information: Provide address fields, or geo-location ({utils.color(['longitude', 'latitude'])}) [red]not both[/]. | ||
| [italic] Central will calc long/lat if address is provided,[/] | ||
@@ -577,5 +577,8 @@ [italic] but does not determine address from long/lat | ||
| _default_false = escape("[default: False]") | ||
| def type_str(_type: str): | ||
| return f"[dim]({_type})[/]" | ||
| clibatch_add_groups = f"""{example.command_text} | ||
@@ -644,3 +647,3 @@ | ||
| # -- // CLASSIC SUBSCRIBE DEVICES \\ -- | ||
| data="""serial,license | ||
| data = """serial,license | ||
| CN12345678,foundation_switch_6300 | ||
@@ -663,3 +666,3 @@ CN12345679,advanced_ap | ||
| # -- // VARIABLES \\ -- | ||
| data="""_sys_serial,_sys_lan_mac,_sys_hostname,_sys_gateway,_sys_module_command,user_var1,user_var2 | ||
| data = """_sys_serial,_sys_lan_mac,_sys_hostname,_sys_gateway,_sys_module_command,user_var1,user_var2 | ||
| US12345678,aabbccddeeff,snantx-idf1-sw1,10.0.30.1,type jl728a,value1,value2 | ||
@@ -720,3 +723,3 @@ SG12345679,ffee.ddcc.bbaa,snantx-idf1-sw2,10.0.30.1,type jl728a,value1,value2 | ||
| # -- // GLP SUBSCRIBE DEVICES \\ -- | ||
| data="""serial,subscription | ||
| data = """serial,subscription | ||
| CN12345678,foundation_switch_6300 | ||
@@ -787,3 +790,3 @@ CN12345679,0f468bdf-e485-087f-abff-fc881f54373c | ||
| # -- // ADD MACS (cloud-auth) \\ -- | ||
| data="""mac,name | ||
| data = """mac,name | ||
| 00:09:B0:75:65:D1,Integra | ||
@@ -806,3 +809,3 @@ 00:1B:4F:23:8A:3E,Avaya VoIP | ||
| # -- // ADD MPSK (cloud-auth) \\ -- REMOVED MPSK Column does not appear to be supported | ||
| data="""name,role,status | ||
| data = """name,role,status | ||
| wade@example.com,admin_users,enabled | ||
@@ -864,2 +867,3 @@ jerry@example.com,dia,enabled | ||
| cron_weekly = """#!/usr/bin/env bash | ||
@@ -924,2 +928,3 @@ | ||
| @dataclass | ||
@@ -930,2 +935,3 @@ class Emoji: | ||
| @dataclass | ||
@@ -935,3 +941,4 @@ class CLIStrings: | ||
| emoji = Emoji() | ||
| cli_strings = CLIStrings() |
@@ -13,9 +13,8 @@ # future annotations does not work here, need to use Union to support py < 3.10 | ||
| # The decorator is used as a type hint for the wrapper function | ||
| def typed_lru_cache(func: Callable[P, T]) -> Callable[P, T]: | ||
| return lru_cache()(func) # Use lru_cache with arguments | ||
| return lru_cache()(func) # Use lru_cache with arguments | ||
| # Define type variables for function signature preservation | ||
@@ -88,2 +87,3 @@ # F = TypeVar('F', bound=Callable[..., Any]) | ||
| class CacheSiteDict(TypedDict): # pragma: no cover used for typing for CacheSite payload | ||
@@ -101,2 +101,3 @@ name: str | ||
| class UnsetType: | ||
@@ -109,4 +110,6 @@ def __repr__(self): | ||
| UNSET = UnsetType() | ||
| # These typedefs are done this way (the backup manually typed class then try to import the real type) as vscode | ||
@@ -120,2 +123,3 @@ # fails to resolve or learn the attributes for the manual class when it's in the except block | ||
| try: | ||
@@ -122,0 +126,0 @@ from typing import Self # type: ignore # noqa |
+15
-16
| # -*- coding: utf-8 -*- | ||
| #!/usr/bin/env python3 | ||
| # !/usr/bin/env python3 | ||
| from __future__ import annotations | ||
@@ -71,2 +71,3 @@ | ||
| class MacFormat(str, Enum): | ||
@@ -104,3 +105,3 @@ COLS = "COLS" | ||
| def cols(self) -> str: | ||
| cols = ':'.join(self.clean[i:i+2] for i in range(0, len(self), 2)) | ||
| cols = ':'.join(self.clean[i:i + 2] for i in range(0, len(self), 2)) | ||
| if cols.strip().endswith(':'): # handle macs starting with 00 for oobm | ||
@@ -112,7 +113,7 @@ cols = f"00:{cols.strip().rstrip(':')}" | ||
| def dashes(self) -> str: | ||
| return '-'.join(self.clean[i:i+2] for i in range(0, len(self), 2)) | ||
| return '-'.join(self.clean[i:i + 2] for i in range(0, len(self), 2)) | ||
| @property | ||
| def dots(self) -> str: | ||
| return '.'.join(self.clean[i:i+4] for i in range(0, len(self), 4)) | ||
| return '.'.join(self.clean[i:i + 4] for i in range(0, len(self), 4)) | ||
@@ -185,3 +186,2 @@ @property | ||
| @staticmethod | ||
@@ -251,3 +251,2 @@ def is_serial(serial: Union[str, List[str]]) -> bool: | ||
| @staticmethod | ||
@@ -284,2 +283,3 @@ def unlistify(data: Any, replace_underscores: bool = True): | ||
| exit_prompt_text = f"Use {exit_prompt_text} to submit.\nType [cyan]{abort_str}[/] or use [cyan]CTRL-C[/] to abort.\n[cyan blink]Waiting for Input...[/]\n" | ||
| def _get_multiline_sub(prompt: str = prompt, **kwargs): | ||
@@ -380,3 +380,2 @@ prompt = f"{prompt}\n\n{exit_prompt_text}" if prompt else f"[cyan]Enter/Paste content[/]. {exit_prompt_text}" | ||
| def strip_no_value(self, data: list[dict] | dict[str, dict], aggressive: bool = False) -> list[dict] | dict[str, dict]: | ||
@@ -490,3 +489,3 @@ """strip out any columns that have no value in any row | ||
| @staticmethod | ||
| def normalize_device_sub_field(data: list[dict[str, str]], *, word_sep: Literal["-", "_"] = None) -> list[dict[str, str]]: | ||
| def normalize_device_sub_field(data: list[dict[str, str]], *, word_sep: Literal["-", "_"] = None) -> list[dict[str, str]]: | ||
| possible_sub_keys = ["license", "services", "subscription"] | ||
@@ -499,3 +498,2 @@ if not word_sep: | ||
| @staticmethod | ||
@@ -597,13 +595,13 @@ def generate_template(template_file: Path | str, var_file: Path | str | None = None, *, config_data: list | dict = None) -> str: | ||
| @staticmethod | ||
| def convert_bytes_to_human(size: int | float | Dict[str, int | float] | None, precision: int = 2, throughput: bool = False, speed: bool = False, return_size: Literal['B','KB','MB','GB','TB', 'PB'] = None) -> str | None: | ||
| def convert_bytes_to_human(size: int | float | Dict[str, int | float] | None, precision: int = 2, throughput: bool = False, speed: bool = False, return_size: Literal['B', 'KB', 'MB', 'GB', 'TB', 'PB'] = None) -> str | None: | ||
| if size is None: | ||
| return size | ||
| def _number_to_human(_size: int | float, precision: int = precision, throughput: bool = throughput, speed: bool = speed, return_size: Literal['B','KB','MB','GB','TB', 'PB'] = return_size) -> str: | ||
| def _number_to_human(_size: int | float, precision: int = precision, throughput: bool = throughput, speed: bool = speed, return_size: Literal['B', 'KB', 'MB', 'GB', 'TB', 'PB'] = return_size) -> str: | ||
| factor = 1000 if throughput or speed else 1024 | ||
| suffixes=['B','KB','MB','GB','TB', 'PB'] if not speed else ["bps", "Kbps", "Mbps", "Gbps", "Tbps", "Pbps"] | ||
| suffixes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'] if not speed else ["bps", "Kbps", "Mbps", "Gbps", "Tbps", "Pbps"] | ||
| suffix_idx = 0 | ||
| while _size > factor and suffix_idx < 5: | ||
| suffix_idx += 1 # increment the index of the suffix | ||
| _size = _size/float(factor) # apply the division | ||
| _size = _size / float(factor) # apply the division | ||
| if return_size and suffixes[suffix_idx].upper().startswith(return_size.upper()): | ||
@@ -703,3 +701,3 @@ break | ||
| [ | ||
| f'[green]{k}[/]:[cyan]{v}[/]' if k != 'status' else f'[{"red" if v.lower() == "down" else "bright_green"}]{v}[/]' for k, v in d.items() if k not in ignore_fields and (v or isinstance(v, (bool, int))) | ||
| f'[green]{k}[/]:[cyan]{v}[/]' if k != 'status' else f'[{"red" if v.lower() == "down" else "bright_green"}]{v}[/]' for k, v in d.items() if k not in ignore_fields and (v or isinstance(v, (bool, int))) | ||
| ] | ||
@@ -779,6 +777,6 @@ ) | ||
| editor = "notepad.exe" | ||
| elif sys.platform == "darwin": # macOS | ||
| elif sys.platform == "darwin": # macOS | ||
| editor = "open" | ||
| args = ["-t"] # '-t' for the default text editor, '-e' opens with TextEdit | ||
| else: # Linux/Unix | ||
| else: # Linux/Unix | ||
| # use EDITOR env var fallback to 'editor' (which typically links to nano or vim) | ||
@@ -822,4 +820,5 @@ editor = os.environ.get('EDITOR', 'editor') | ||
| if __name__ == "__main__": | ||
| ... | ||
@@ -39,4 +39,4 @@ #!/usr/bin/env python | ||
| name = 'Csv' | ||
| aliases = ['csv', 'comma-separated', 'comma-separated-values'] | ||
| name = 'Csv' | ||
| aliases = ['csv', 'comma-separated', 'comma-separated-values'] | ||
| filenames = ['*.csv'] | ||
@@ -108,3 +108,2 @@ | ||
| if __name__ == '__main__': | ||
@@ -111,0 +110,0 @@ sample_csv_material = """trailer,125 |
@@ -12,2 +12,3 @@ import sys | ||
| # -- break up arguments passed as single string from vscode promptString -- | ||
@@ -14,0 +15,0 @@ def vscode_arg_handler(): |
@@ -79,2 +79,3 @@ #!/usr/bin/env python3 | ||
| class HookResponse(BaseModel): | ||
@@ -86,3 +87,3 @@ result: str | ||
| schema_extra = { | ||
| "example": {"result": "OK", "updated": True,} | ||
| "example": {"result": "OK", "updated": True, } | ||
| } | ||
@@ -106,2 +107,4 @@ | ||
| } | ||
| class BranchResponse(BaseModel): | ||
@@ -183,2 +186,3 @@ id: str | ||
| def _default_response(serial: str) -> dict: | ||
@@ -195,2 +199,3 @@ return { | ||
| def _hook_response(data: dict) -> dict: | ||
@@ -279,3 +284,2 @@ return { | ||
| # TODO hook_data to it's own DB file | ||
@@ -372,3 +376,2 @@ cache.HookDataDB.truncate() | ||
| res: APIResponse = await api.session._request(api.monitoring.get_gw_tunnels, data["device_id"]) | ||
@@ -375,0 +378,0 @@ if not res: |
@@ -46,2 +46,3 @@ #!/usr/bin/env python3 | ||
| DEFAULT_HEADERS = { | ||
@@ -52,2 +53,3 @@ "Accept": "application/json", | ||
| class HookResponse(BaseModel): | ||
@@ -59,3 +61,3 @@ result: str | ||
| schema_extra = { | ||
| "example": {"result": "OK", "updated": True,} | ||
| "example": {"result": "OK", "updated": True, } | ||
| } | ||
@@ -79,2 +81,4 @@ | ||
| } | ||
| class BranchResponse(BaseModel): | ||
@@ -134,2 +138,3 @@ id: str | ||
| def _default_response(serial: str) -> dict: | ||
@@ -146,2 +151,3 @@ return { | ||
| def _hook_response(data: dict) -> dict: | ||
@@ -241,3 +247,2 @@ return { | ||
| async def verify_header_auth(self, data: dict, svc: str, sig: str, ts: str, del_id: str): | ||
@@ -270,3 +275,2 @@ """ | ||
| async def snow_token_refresh(self, refresh_token: str = None) -> bool: | ||
@@ -369,3 +373,3 @@ | ||
| "result": "ok", | ||
| "updated": True # if updated else False | ||
| "updated": True # if updated else False | ||
| } | ||
@@ -372,0 +376,0 @@ |
@@ -119,2 +119,3 @@ # pragma: exclude file Still a WIP | ||
| async def _clean_mon_data(data: monitoring_pb2.MonitoringInformation): | ||
@@ -246,3 +247,3 @@ # [attr for attr in data.__dir__() if not attr.startswith("_") and not callable(getattr(data, attr)) and getattr(data, attr)] | ||
| if mkey == "timestamp": | ||
| macs = [DateTime(iface[mkey]) for iface in as_dict[key] if mkey in iface] | ||
| macs = [DateTime(iface[mkey]) for iface in as_dict[key] if mkey in iface] | ||
| elif mkey in ["deviceId", "associatedDevice"]: | ||
@@ -255,7 +256,7 @@ as_dict = get_devices(as_dict, key=key) | ||
| elif mkey in ["essid", "network"]: | ||
| macs = [_decode(iface[mkey], field_type=mkey) for iface in as_dict[key] if mkey in iface] | ||
| macs = [_decode(iface[mkey], field_type=mkey) for iface in as_dict[key] if mkey in iface] | ||
| elif mkey in ["probeIpAddr"]: | ||
| macs = [_decode(iface[mkey], field_type=mac_keys[mkey].split("_")[-1]) for iface in as_dict[key] if mkey in iface] | ||
| macs = [_decode(iface[mkey], field_type=mac_keys[mkey].split("_")[-1]) for iface in as_dict[key] if mkey in iface] | ||
| else: | ||
| macs = [_decode(iface[mkey]["addr"], field_type=mac_keys[mkey].split("_")[-1]) for iface in as_dict[key] if mkey in iface] | ||
| macs = [_decode(iface[mkey]["addr"], field_type=mac_keys[mkey].split("_")[-1]) for iface in as_dict[key] if mkey in iface] | ||
@@ -273,3 +274,3 @@ if macs: | ||
| for ip_key in ip_keys.keys(): | ||
| ips = [_decode(iface[ip_key]["addr"]) for iface in as_dict[key] if ip_key in iface] | ||
| ips = [_decode(iface[ip_key]["addr"]) for iface in as_dict[key] if ip_key in iface] | ||
| if ips: | ||
@@ -337,3 +338,2 @@ as_dict[key] = [{k if k != ip_key else ip_keys[ip_key]: v if k != ip_key else ip for k, v in iface.items()} for iface, ip in zip(as_dict[key], ips)] | ||
| as_dict = {"timestamp": DateTime(pb_data.timestamp), **{k: v for k, v in as_dict.items() if k != "timestamp"}} # Move timestamp to top and format | ||
@@ -344,3 +344,2 @@ del as_dict["customerId"] | ||
| # TODO base_url will be required once not hardcoded, need to determine if base-url can be determined reliably from central base and provide config option for it. | ||
@@ -347,0 +346,0 @@ async def follow_logs(wss_config: WSSConfig, log_type: LogType = "event"): |
+1
-1
| Metadata-Version: 2.4 | ||
| Name: centralcli | ||
| Version: 9.3.0 | ||
| Version: 9.3.1 | ||
| Summary: A CLI for interacting with Aruba Central (Cloud Management Platform). Facilitates bulk imports, exports, reporting. A handy tool if you have devices managed by Aruba Central. | ||
@@ -5,0 +5,0 @@ License-Expression: MIT |
+4
-3
| [project] | ||
| name = "centralcli" | ||
| version = "9.3.0" | ||
| version = "9.3.1" | ||
| description = "A CLI for interacting with Aruba Central (Cloud Management Platform). Facilitates bulk imports, exports, reporting. A handy tool if you have devices managed by Aruba Central." | ||
@@ -206,4 +206,5 @@ license = "MIT" | ||
| [tool.ruff.lint] | ||
| select = ["E", "F", "W605"] | ||
| ignore = ["E501"] # ignore line too long | ||
| preview = true | ||
| select = ["E", "F", "W605", "E221", "E222", "E241"] | ||
| ignore = ["E501", "E116"] # ignore line too long and unexpected indentation for comments | ||
@@ -210,0 +211,0 @@ # Allow autofix for all enabled rules (when `--fix`) is provided. |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
4999557
0