mirror of
https://github.com/kellyjonbrazil/jc.git
synced 2025-06-15 00:05:11 +02:00
add team-port.config and fix for blank values
This commit is contained in:
@ -1,5 +1,8 @@
|
||||
jc changelog
|
||||
|
||||
20250518 v1.25.6
|
||||
- Fix `nmcli` command parser to support blank `team.config` JSON value and `team-port.config` JSON value
|
||||
|
||||
20250503 v1.25.5
|
||||
- Add `amixer` command parser
|
||||
- Enhance `iptables` command parser to add default policy statistics fields
|
||||
|
@ -36,7 +36,8 @@ These are documented below.
|
||||
[
|
||||
{
|
||||
"<key>": string/integer/float, # [0]
|
||||
"team_config": object,
|
||||
"team_config": object/null,
|
||||
"team_port_config": object/null,
|
||||
"dhcp4_option_x": {
|
||||
"name": string,
|
||||
"value": string/integer/float,
|
||||
@ -151,7 +152,7 @@ from jc.exceptions import ParseError
|
||||
|
||||
class info():
|
||||
"""Provides parser metadata (version, author, etc.)"""
|
||||
version = '1.1'
|
||||
version = '1.2'
|
||||
description = '`nmcli` command parser'
|
||||
author = 'Kelly Brazil'
|
||||
author_email = 'kellyjonbrazil@gmail.com'
|
||||
@ -320,23 +321,32 @@ def _connection_show_x_parse(data: str) -> List[Dict]:
|
||||
|
||||
for line in filter(None, data.splitlines()):
|
||||
|
||||
# fix for team.config, which is multi-line JSON
|
||||
if line.startswith('team.config:'):
|
||||
# fix for team.config and team-port.config, which are multi-line JSON
|
||||
if line.startswith('team.config:') or line.startswith('team-port.config:'):
|
||||
key, value = line.split(':', maxsplit=1)
|
||||
key_team = _normalize_key(key)
|
||||
value_team = value.strip()
|
||||
|
||||
if value_team == '--':
|
||||
team_config_value = []
|
||||
item[key_team] = None
|
||||
continue
|
||||
|
||||
in_team_config = True
|
||||
_, value = line.split(':', maxsplit=1)
|
||||
team_config_value.append(value.strip())
|
||||
item['team_config'] = {}
|
||||
team_config_value.append(value_team)
|
||||
item[key_team] = {}
|
||||
continue
|
||||
|
||||
if not line.startswith('team.') and in_team_config:
|
||||
STARTSWITH_TEAM = line.startswith('team.') or line.startswith('team-port.')
|
||||
if not STARTSWITH_TEAM and in_team_config:
|
||||
team_config_value.append(line.strip())
|
||||
continue
|
||||
|
||||
in_team_config = False
|
||||
|
||||
if team_config_value:
|
||||
# team.config value should always be JSON
|
||||
item['team_config'] = json.loads(''.join(team_config_value))
|
||||
# team.config and team-port.config values should always be JSON
|
||||
item[key_team] = json.loads(''.join(team_config_value))
|
||||
team_config_value = []
|
||||
|
||||
key, value = line.split(':', maxsplit=1)
|
||||
|
1
tests/fixtures/generic/nmcli-team-and-team-port-config.json
vendored
Normal file
1
tests/fixtures/generic/nmcli-team-and-team-port-config.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
[{"connection_id":"Team connection 1","connection_uuid":"258e02c2-d9f9-44bb-8d27-887e11aa1828","connection_stable_id":null,"connection_type":"team","connection_interface_name":"team0","connection_autoconnect":"yes","connection_autoconnect_priority":0,"connection_autoconnect_retries":-1,"connection_autoconnect_retries_text":"default","connection_multi_connect":0,"connection_multi_connect_text":"default","connection_auth_retries":-1,"connection_timestamp":0,"connection_read_only":"no","connection_permissions":null,"connection_zone":null,"connection_master":null,"connection_slave_type":null,"connection_autoconnect_slaves":-1,"connection_autoconnect_slaves_text":"default","connection_secondaries":null,"connection_gateway_ping_timeout":0,"connection_metered":"unknown","connection_lldp":"default","connection_mdns":-1,"connection_mdns_text":"default","connection_llmnr":-1,"connection_llmnr_text":"default","connection_dns_over_tls":-1,"connection_dns_over_tls_text":"default","connection_wait_device_timeout":-1,"ipv4_method":"auto","ipv4_dns":null,"ipv4_dns_search":null,"ipv4_dns_options":null,"ipv4_dns_priority":0,"ipv4_addresses":null,"ipv4_gateway":null,"ipv4_routes":null,"ipv4_route_metric":-1,"ipv4_route_table":0,"ipv4_route_table_text":"unspec","ipv4_routing_rules":null,"ipv4_ignore_auto_routes":"no","ipv4_ignore_auto_dns":"no","ipv4_dhcp_client_id":null,"ipv4_dhcp_iaid":null,"ipv4_dhcp_timeout":0,"ipv4_dhcp_timeout_text":"default","ipv4_dhcp_send_hostname":"yes","ipv4_dhcp_hostname":null,"ipv4_dhcp_fqdn":null,"ipv4_dhcp_hostname_flags":"0x0","ipv4_dhcp_hostname_flags_text":"none","ipv4_never_default":"no","ipv4_may_fail":"yes","ipv4_required_timeout":-1,"ipv4_required_timeout_text":"default","ipv4_dad_timeout":-1,"ipv4_dad_timeout_text":"default","ipv4_dhcp_vendor_class_identifier":null,"ipv4_dhcp_reject_servers":null,"ipv6_method":"auto","ipv6_dns":null,"ipv6_dns_search":null,"ipv6_dns_options":null,"ipv6_dns_priority":0,"ipv6_addresses":null,"ipv6_gateway":null,"ipv6_routes":null,"ipv6_route_metric":-1,"ipv6_route_table":0,"ipv6_route_table_text":"unspec","ipv6_routing_rules":null,"ipv6_ignore_auto_routes":"no","ipv6_ignore_auto_dns":"no","ipv6_never_default":"no","ipv6_may_fail":"yes","ipv6_required_timeout":-1,"ipv6_required_timeout_text":"default","ipv6_ip6_privacy":-1,"ipv6_ip6_privacy_text":"unknown","ipv6_addr_gen_mode":"stable-privacy","ipv6_ra_timeout":0,"ipv6_ra_timeout_text":"default","ipv6_dhcp_duid":null,"ipv6_dhcp_iaid":null,"ipv6_dhcp_timeout":0,"ipv6_dhcp_timeout_text":"default","ipv6_dhcp_send_hostname":"yes","ipv6_dhcp_hostname":null,"ipv6_dhcp_hostname_flags":"0x0","ipv6_dhcp_hostname_flags_text":"none","ipv6_token":null,"team_config":{"runner":{"name":"roundrobin"},"link_watch":{"name":"ethtool"}},"team_notify_peers_count":-1,"team_notify_peers_count_text":"unset","team_notify_peers_interval":-1,"team_notify_peers_interval_text":"unset","team_mcast_rejoin_count":-1,"team_mcast_rejoin_count_text":"unset","team_mcast_rejoin_interval":-1,"team_mcast_rejoin_interval_text":"unset","team_runner":"roundrobin","team_runner_hwaddr_policy":null,"team_runner_tx_hash":null,"team_runner_tx_balancer":null,"team_runner_tx_balancer_interval":-1,"team_runner_tx_balancer_interval_text":"unset","team_runner_active":"yes","team_runner_fast_rate":"no","team_runner_sys_prio":-1,"team_runner_sys_prio_text":"unset","team_runner_min_ports":-1,"team_runner_min_ports_text":"unset","team_runner_agg_select_policy":null,"team_link_watchers":"name=ethtool","team_port_config":{"queue_id":0,"prio":0,"lacp_prio":0,"lacp_key":0},"team_port_queue_id":0,"team_port_queue_id_text":"default","team_port_prio":0,"team_port_prio_text":"unset","team_port_sticky":"no","team_port_lacp_prio":0,"team_port_lacp_key":0,"team_port_lacp_key_text":"default","team_port_link_watchers":null,"proxy_method":"none","proxy_browser_only":"no","proxy_pac_url":null,"proxy_pac_script":null}]
|
116
tests/fixtures/generic/nmcli-team-and-team-port-config.out
vendored
Normal file
116
tests/fixtures/generic/nmcli-team-and-team-port-config.out
vendored
Normal file
@ -0,0 +1,116 @@
|
||||
connection.id: Team connection 1
|
||||
connection.uuid: 258e02c2-d9f9-44bb-8d27-887e11aa1828
|
||||
connection.stable-id: --
|
||||
connection.type: team
|
||||
connection.interface-name: team0
|
||||
connection.autoconnect: yes
|
||||
connection.autoconnect-priority: 0
|
||||
connection.autoconnect-retries: -1 (default)
|
||||
connection.multi-connect: 0 (default)
|
||||
connection.auth-retries: -1
|
||||
connection.timestamp: 0
|
||||
connection.read-only: no
|
||||
connection.permissions: --
|
||||
connection.zone: --
|
||||
connection.master: --
|
||||
connection.slave-type: --
|
||||
connection.autoconnect-slaves: -1 (default)
|
||||
connection.secondaries: --
|
||||
connection.gateway-ping-timeout: 0
|
||||
connection.metered: unknown
|
||||
connection.lldp: default
|
||||
connection.mdns: -1 (default)
|
||||
connection.llmnr: -1 (default)
|
||||
connection.dns-over-tls: -1 (default)
|
||||
connection.wait-device-timeout: -1
|
||||
ipv4.method: auto
|
||||
ipv4.dns: --
|
||||
ipv4.dns-search: --
|
||||
ipv4.dns-options: --
|
||||
ipv4.dns-priority: 0
|
||||
ipv4.addresses: --
|
||||
ipv4.gateway: --
|
||||
ipv4.routes: --
|
||||
ipv4.route-metric: -1
|
||||
ipv4.route-table: 0 (unspec)
|
||||
ipv4.routing-rules: --
|
||||
ipv4.ignore-auto-routes: no
|
||||
ipv4.ignore-auto-dns: no
|
||||
ipv4.dhcp-client-id: --
|
||||
ipv4.dhcp-iaid: --
|
||||
ipv4.dhcp-timeout: 0 (default)
|
||||
ipv4.dhcp-send-hostname: yes
|
||||
ipv4.dhcp-hostname: --
|
||||
ipv4.dhcp-fqdn: --
|
||||
ipv4.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv4.never-default: no
|
||||
ipv4.may-fail: yes
|
||||
ipv4.required-timeout: -1 (default)
|
||||
ipv4.dad-timeout: -1 (default)
|
||||
ipv4.dhcp-vendor-class-identifier: --
|
||||
ipv4.dhcp-reject-servers: --
|
||||
ipv6.method: auto
|
||||
ipv6.dns: --
|
||||
ipv6.dns-search: --
|
||||
ipv6.dns-options: --
|
||||
ipv6.dns-priority: 0
|
||||
ipv6.addresses: --
|
||||
ipv6.gateway: --
|
||||
ipv6.routes: --
|
||||
ipv6.route-metric: -1
|
||||
ipv6.route-table: 0 (unspec)
|
||||
ipv6.routing-rules: --
|
||||
ipv6.ignore-auto-routes: no
|
||||
ipv6.ignore-auto-dns: no
|
||||
ipv6.never-default: no
|
||||
ipv6.may-fail: yes
|
||||
ipv6.required-timeout: -1 (default)
|
||||
ipv6.ip6-privacy: -1 (unknown)
|
||||
ipv6.addr-gen-mode: stable-privacy
|
||||
ipv6.ra-timeout: 0 (default)
|
||||
ipv6.dhcp-duid: --
|
||||
ipv6.dhcp-iaid: --
|
||||
ipv6.dhcp-timeout: 0 (default)
|
||||
ipv6.dhcp-send-hostname: yes
|
||||
ipv6.dhcp-hostname: --
|
||||
ipv6.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv6.token: --
|
||||
team.config: {
|
||||
"runner": {
|
||||
"name": "roundrobin"
|
||||
},
|
||||
"link_watch": {
|
||||
"name": "ethtool"
|
||||
}
|
||||
}
|
||||
team.notify-peers-count: -1 (unset)
|
||||
team.notify-peers-interval: -1 (unset)
|
||||
team.mcast-rejoin-count: -1 (unset)
|
||||
team.mcast-rejoin-interval: -1 (unset)
|
||||
team.runner: roundrobin
|
||||
team.runner-hwaddr-policy: --
|
||||
team.runner-tx-hash: --
|
||||
team.runner-tx-balancer: --
|
||||
team.runner-tx-balancer-interval: -1 (unset)
|
||||
team.runner-active: yes
|
||||
team.runner-fast-rate: no
|
||||
team.runner-sys-prio: -1 (unset)
|
||||
team.runner-min-ports: -1 (unset)
|
||||
team.runner-agg-select-policy: --
|
||||
team.link-watchers: name=ethtool
|
||||
team-port.config: {
|
||||
"queue_id": 0,
|
||||
"prio": 0,
|
||||
"lacp_prio": 0,
|
||||
"lacp_key": 0
|
||||
}
|
||||
team-port.queue-id: 0 (default)
|
||||
team-port.prio: 0 (unset)
|
||||
team-port.sticky: no
|
||||
team-port.lacp-prio: 0
|
||||
team-port.lacp-key: 0 (default)
|
||||
team-port.link-watchers: --
|
||||
proxy.method: none
|
||||
proxy.browser-only: no
|
||||
proxy.pac-url: --
|
||||
proxy.pac-script: --
|
1
tests/fixtures/generic/nmcli-team-config-blank.json
vendored
Normal file
1
tests/fixtures/generic/nmcli-team-config-blank.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
[{"connection_id":"Team connection 1","connection_uuid":"258e02c2-d9f9-44bb-8d27-887e11aa1828","connection_stable_id":null,"connection_type":"team","connection_interface_name":"team0","connection_autoconnect":"yes","connection_autoconnect_priority":0,"connection_autoconnect_retries":-1,"connection_autoconnect_retries_text":"default","connection_multi_connect":0,"connection_multi_connect_text":"default","connection_auth_retries":-1,"connection_timestamp":0,"connection_read_only":"no","connection_permissions":null,"connection_zone":null,"connection_master":null,"connection_slave_type":null,"connection_autoconnect_slaves":-1,"connection_autoconnect_slaves_text":"default","connection_secondaries":null,"connection_gateway_ping_timeout":0,"connection_metered":"unknown","connection_lldp":"default","connection_mdns":-1,"connection_mdns_text":"default","connection_llmnr":-1,"connection_llmnr_text":"default","connection_dns_over_tls":-1,"connection_dns_over_tls_text":"default","connection_wait_device_timeout":-1,"ipv4_method":"auto","ipv4_dns":null,"ipv4_dns_search":null,"ipv4_dns_options":null,"ipv4_dns_priority":0,"ipv4_addresses":null,"ipv4_gateway":null,"ipv4_routes":null,"ipv4_route_metric":-1,"ipv4_route_table":0,"ipv4_route_table_text":"unspec","ipv4_routing_rules":null,"ipv4_ignore_auto_routes":"no","ipv4_ignore_auto_dns":"no","ipv4_dhcp_client_id":null,"ipv4_dhcp_iaid":null,"ipv4_dhcp_timeout":0,"ipv4_dhcp_timeout_text":"default","ipv4_dhcp_send_hostname":"yes","ipv4_dhcp_hostname":null,"ipv4_dhcp_fqdn":null,"ipv4_dhcp_hostname_flags":"0x0","ipv4_dhcp_hostname_flags_text":"none","ipv4_never_default":"no","ipv4_may_fail":"yes","ipv4_required_timeout":-1,"ipv4_required_timeout_text":"default","ipv4_dad_timeout":-1,"ipv4_dad_timeout_text":"default","ipv4_dhcp_vendor_class_identifier":null,"ipv4_dhcp_reject_servers":null,"ipv6_method":"auto","ipv6_dns":null,"ipv6_dns_search":null,"ipv6_dns_options":null,"ipv6_dns_priority":0,"ipv6_addresses":null,"ipv6_gateway":null,"ipv6_routes":null,"ipv6_route_metric":-1,"ipv6_route_table":0,"ipv6_route_table_text":"unspec","ipv6_routing_rules":null,"ipv6_ignore_auto_routes":"no","ipv6_ignore_auto_dns":"no","ipv6_never_default":"no","ipv6_may_fail":"yes","ipv6_required_timeout":-1,"ipv6_required_timeout_text":"default","ipv6_ip6_privacy":-1,"ipv6_ip6_privacy_text":"unknown","ipv6_addr_gen_mode":"stable-privacy","ipv6_ra_timeout":0,"ipv6_ra_timeout_text":"default","ipv6_dhcp_duid":null,"ipv6_dhcp_iaid":null,"ipv6_dhcp_timeout":0,"ipv6_dhcp_timeout_text":"default","ipv6_dhcp_send_hostname":"yes","ipv6_dhcp_hostname":null,"ipv6_dhcp_hostname_flags":"0x0","ipv6_dhcp_hostname_flags_text":"none","ipv6_token":null,"team_config":null,"team_notify_peers_count":-1,"team_notify_peers_count_text":"unset","team_notify_peers_interval":-1,"team_notify_peers_interval_text":"unset","team_mcast_rejoin_count":-1,"team_mcast_rejoin_count_text":"unset","team_mcast_rejoin_interval":-1,"team_mcast_rejoin_interval_text":"unset","team_runner":"roundrobin","team_runner_hwaddr_policy":null,"team_runner_tx_hash":null,"team_runner_tx_balancer":null,"team_runner_tx_balancer_interval":-1,"team_runner_tx_balancer_interval_text":"unset","team_runner_active":"yes","team_runner_fast_rate":"no","team_runner_sys_prio":-1,"team_runner_sys_prio_text":"unset","team_runner_min_ports":-1,"team_runner_min_ports_text":"unset","team_runner_agg_select_policy":null,"team_link_watchers":"name=ethtool","proxy_method":"none","proxy_browser_only":"no","proxy_pac_url":null,"proxy_pac_script":null}]
|
97
tests/fixtures/generic/nmcli-team-config-blank.out
vendored
Normal file
97
tests/fixtures/generic/nmcli-team-config-blank.out
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
connection.id: Team connection 1
|
||||
connection.uuid: 258e02c2-d9f9-44bb-8d27-887e11aa1828
|
||||
connection.stable-id: --
|
||||
connection.type: team
|
||||
connection.interface-name: team0
|
||||
connection.autoconnect: yes
|
||||
connection.autoconnect-priority: 0
|
||||
connection.autoconnect-retries: -1 (default)
|
||||
connection.multi-connect: 0 (default)
|
||||
connection.auth-retries: -1
|
||||
connection.timestamp: 0
|
||||
connection.read-only: no
|
||||
connection.permissions: --
|
||||
connection.zone: --
|
||||
connection.master: --
|
||||
connection.slave-type: --
|
||||
connection.autoconnect-slaves: -1 (default)
|
||||
connection.secondaries: --
|
||||
connection.gateway-ping-timeout: 0
|
||||
connection.metered: unknown
|
||||
connection.lldp: default
|
||||
connection.mdns: -1 (default)
|
||||
connection.llmnr: -1 (default)
|
||||
connection.dns-over-tls: -1 (default)
|
||||
connection.wait-device-timeout: -1
|
||||
ipv4.method: auto
|
||||
ipv4.dns: --
|
||||
ipv4.dns-search: --
|
||||
ipv4.dns-options: --
|
||||
ipv4.dns-priority: 0
|
||||
ipv4.addresses: --
|
||||
ipv4.gateway: --
|
||||
ipv4.routes: --
|
||||
ipv4.route-metric: -1
|
||||
ipv4.route-table: 0 (unspec)
|
||||
ipv4.routing-rules: --
|
||||
ipv4.ignore-auto-routes: no
|
||||
ipv4.ignore-auto-dns: no
|
||||
ipv4.dhcp-client-id: --
|
||||
ipv4.dhcp-iaid: --
|
||||
ipv4.dhcp-timeout: 0 (default)
|
||||
ipv4.dhcp-send-hostname: yes
|
||||
ipv4.dhcp-hostname: --
|
||||
ipv4.dhcp-fqdn: --
|
||||
ipv4.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv4.never-default: no
|
||||
ipv4.may-fail: yes
|
||||
ipv4.required-timeout: -1 (default)
|
||||
ipv4.dad-timeout: -1 (default)
|
||||
ipv4.dhcp-vendor-class-identifier: --
|
||||
ipv4.dhcp-reject-servers: --
|
||||
ipv6.method: auto
|
||||
ipv6.dns: --
|
||||
ipv6.dns-search: --
|
||||
ipv6.dns-options: --
|
||||
ipv6.dns-priority: 0
|
||||
ipv6.addresses: --
|
||||
ipv6.gateway: --
|
||||
ipv6.routes: --
|
||||
ipv6.route-metric: -1
|
||||
ipv6.route-table: 0 (unspec)
|
||||
ipv6.routing-rules: --
|
||||
ipv6.ignore-auto-routes: no
|
||||
ipv6.ignore-auto-dns: no
|
||||
ipv6.never-default: no
|
||||
ipv6.may-fail: yes
|
||||
ipv6.required-timeout: -1 (default)
|
||||
ipv6.ip6-privacy: -1 (unknown)
|
||||
ipv6.addr-gen-mode: stable-privacy
|
||||
ipv6.ra-timeout: 0 (default)
|
||||
ipv6.dhcp-duid: --
|
||||
ipv6.dhcp-iaid: --
|
||||
ipv6.dhcp-timeout: 0 (default)
|
||||
ipv6.dhcp-send-hostname: yes
|
||||
ipv6.dhcp-hostname: --
|
||||
ipv6.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv6.token: --
|
||||
team.config: --
|
||||
team.notify-peers-count: -1 (unset)
|
||||
team.notify-peers-interval: -1 (unset)
|
||||
team.mcast-rejoin-count: -1 (unset)
|
||||
team.mcast-rejoin-interval: -1 (unset)
|
||||
team.runner: roundrobin
|
||||
team.runner-hwaddr-policy: --
|
||||
team.runner-tx-hash: --
|
||||
team.runner-tx-balancer: --
|
||||
team.runner-tx-balancer-interval: -1 (unset)
|
||||
team.runner-active: yes
|
||||
team.runner-fast-rate: no
|
||||
team.runner-sys-prio: -1 (unset)
|
||||
team.runner-min-ports: -1 (unset)
|
||||
team.runner-agg-select-policy: --
|
||||
team.link-watchers: name=ethtool
|
||||
proxy.method: none
|
||||
proxy.browser-only: no
|
||||
proxy.pac-url: --
|
||||
proxy.pac-script: --
|
1
tests/fixtures/generic/nmcli-team-config.json
vendored
Normal file
1
tests/fixtures/generic/nmcli-team-config.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
[{"connection_id":"Team connection 1","connection_uuid":"258e02c2-d9f9-44bb-8d27-887e11aa1828","connection_stable_id":null,"connection_type":"team","connection_interface_name":"team0","connection_autoconnect":"yes","connection_autoconnect_priority":0,"connection_autoconnect_retries":-1,"connection_autoconnect_retries_text":"default","connection_multi_connect":0,"connection_multi_connect_text":"default","connection_auth_retries":-1,"connection_timestamp":0,"connection_read_only":"no","connection_permissions":null,"connection_zone":null,"connection_master":null,"connection_slave_type":null,"connection_autoconnect_slaves":-1,"connection_autoconnect_slaves_text":"default","connection_secondaries":null,"connection_gateway_ping_timeout":0,"connection_metered":"unknown","connection_lldp":"default","connection_mdns":-1,"connection_mdns_text":"default","connection_llmnr":-1,"connection_llmnr_text":"default","connection_dns_over_tls":-1,"connection_dns_over_tls_text":"default","connection_wait_device_timeout":-1,"ipv4_method":"auto","ipv4_dns":null,"ipv4_dns_search":null,"ipv4_dns_options":null,"ipv4_dns_priority":0,"ipv4_addresses":null,"ipv4_gateway":null,"ipv4_routes":null,"ipv4_route_metric":-1,"ipv4_route_table":0,"ipv4_route_table_text":"unspec","ipv4_routing_rules":null,"ipv4_ignore_auto_routes":"no","ipv4_ignore_auto_dns":"no","ipv4_dhcp_client_id":null,"ipv4_dhcp_iaid":null,"ipv4_dhcp_timeout":0,"ipv4_dhcp_timeout_text":"default","ipv4_dhcp_send_hostname":"yes","ipv4_dhcp_hostname":null,"ipv4_dhcp_fqdn":null,"ipv4_dhcp_hostname_flags":"0x0","ipv4_dhcp_hostname_flags_text":"none","ipv4_never_default":"no","ipv4_may_fail":"yes","ipv4_required_timeout":-1,"ipv4_required_timeout_text":"default","ipv4_dad_timeout":-1,"ipv4_dad_timeout_text":"default","ipv4_dhcp_vendor_class_identifier":null,"ipv4_dhcp_reject_servers":null,"ipv6_method":"auto","ipv6_dns":null,"ipv6_dns_search":null,"ipv6_dns_options":null,"ipv6_dns_priority":0,"ipv6_addresses":null,"ipv6_gateway":null,"ipv6_routes":null,"ipv6_route_metric":-1,"ipv6_route_table":0,"ipv6_route_table_text":"unspec","ipv6_routing_rules":null,"ipv6_ignore_auto_routes":"no","ipv6_ignore_auto_dns":"no","ipv6_never_default":"no","ipv6_may_fail":"yes","ipv6_required_timeout":-1,"ipv6_required_timeout_text":"default","ipv6_ip6_privacy":-1,"ipv6_ip6_privacy_text":"unknown","ipv6_addr_gen_mode":"stable-privacy","ipv6_ra_timeout":0,"ipv6_ra_timeout_text":"default","ipv6_dhcp_duid":null,"ipv6_dhcp_iaid":null,"ipv6_dhcp_timeout":0,"ipv6_dhcp_timeout_text":"default","ipv6_dhcp_send_hostname":"yes","ipv6_dhcp_hostname":null,"ipv6_dhcp_hostname_flags":"0x0","ipv6_dhcp_hostname_flags_text":"none","ipv6_token":null,"team_config":{"runner":{"name":"roundrobin"},"link_watch":{"name":"ethtool"}},"team_notify_peers_count":-1,"team_notify_peers_count_text":"unset","team_notify_peers_interval":-1,"team_notify_peers_interval_text":"unset","team_mcast_rejoin_count":-1,"team_mcast_rejoin_count_text":"unset","team_mcast_rejoin_interval":-1,"team_mcast_rejoin_interval_text":"unset","team_runner":"roundrobin","team_runner_hwaddr_policy":null,"team_runner_tx_hash":null,"team_runner_tx_balancer":null,"team_runner_tx_balancer_interval":-1,"team_runner_tx_balancer_interval_text":"unset","team_runner_active":"yes","team_runner_fast_rate":"no","team_runner_sys_prio":-1,"team_runner_sys_prio_text":"unset","team_runner_min_ports":-1,"team_runner_min_ports_text":"unset","team_runner_agg_select_policy":null,"team_link_watchers":"name=ethtool","proxy_method":"none","proxy_browser_only":"no","proxy_pac_url":null,"proxy_pac_script":null}]
|
104
tests/fixtures/generic/nmcli-team-config.out
vendored
Normal file
104
tests/fixtures/generic/nmcli-team-config.out
vendored
Normal file
@ -0,0 +1,104 @@
|
||||
connection.id: Team connection 1
|
||||
connection.uuid: 258e02c2-d9f9-44bb-8d27-887e11aa1828
|
||||
connection.stable-id: --
|
||||
connection.type: team
|
||||
connection.interface-name: team0
|
||||
connection.autoconnect: yes
|
||||
connection.autoconnect-priority: 0
|
||||
connection.autoconnect-retries: -1 (default)
|
||||
connection.multi-connect: 0 (default)
|
||||
connection.auth-retries: -1
|
||||
connection.timestamp: 0
|
||||
connection.read-only: no
|
||||
connection.permissions: --
|
||||
connection.zone: --
|
||||
connection.master: --
|
||||
connection.slave-type: --
|
||||
connection.autoconnect-slaves: -1 (default)
|
||||
connection.secondaries: --
|
||||
connection.gateway-ping-timeout: 0
|
||||
connection.metered: unknown
|
||||
connection.lldp: default
|
||||
connection.mdns: -1 (default)
|
||||
connection.llmnr: -1 (default)
|
||||
connection.dns-over-tls: -1 (default)
|
||||
connection.wait-device-timeout: -1
|
||||
ipv4.method: auto
|
||||
ipv4.dns: --
|
||||
ipv4.dns-search: --
|
||||
ipv4.dns-options: --
|
||||
ipv4.dns-priority: 0
|
||||
ipv4.addresses: --
|
||||
ipv4.gateway: --
|
||||
ipv4.routes: --
|
||||
ipv4.route-metric: -1
|
||||
ipv4.route-table: 0 (unspec)
|
||||
ipv4.routing-rules: --
|
||||
ipv4.ignore-auto-routes: no
|
||||
ipv4.ignore-auto-dns: no
|
||||
ipv4.dhcp-client-id: --
|
||||
ipv4.dhcp-iaid: --
|
||||
ipv4.dhcp-timeout: 0 (default)
|
||||
ipv4.dhcp-send-hostname: yes
|
||||
ipv4.dhcp-hostname: --
|
||||
ipv4.dhcp-fqdn: --
|
||||
ipv4.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv4.never-default: no
|
||||
ipv4.may-fail: yes
|
||||
ipv4.required-timeout: -1 (default)
|
||||
ipv4.dad-timeout: -1 (default)
|
||||
ipv4.dhcp-vendor-class-identifier: --
|
||||
ipv4.dhcp-reject-servers: --
|
||||
ipv6.method: auto
|
||||
ipv6.dns: --
|
||||
ipv6.dns-search: --
|
||||
ipv6.dns-options: --
|
||||
ipv6.dns-priority: 0
|
||||
ipv6.addresses: --
|
||||
ipv6.gateway: --
|
||||
ipv6.routes: --
|
||||
ipv6.route-metric: -1
|
||||
ipv6.route-table: 0 (unspec)
|
||||
ipv6.routing-rules: --
|
||||
ipv6.ignore-auto-routes: no
|
||||
ipv6.ignore-auto-dns: no
|
||||
ipv6.never-default: no
|
||||
ipv6.may-fail: yes
|
||||
ipv6.required-timeout: -1 (default)
|
||||
ipv6.ip6-privacy: -1 (unknown)
|
||||
ipv6.addr-gen-mode: stable-privacy
|
||||
ipv6.ra-timeout: 0 (default)
|
||||
ipv6.dhcp-duid: --
|
||||
ipv6.dhcp-iaid: --
|
||||
ipv6.dhcp-timeout: 0 (default)
|
||||
ipv6.dhcp-send-hostname: yes
|
||||
ipv6.dhcp-hostname: --
|
||||
ipv6.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv6.token: --
|
||||
team.config: {
|
||||
"runner": {
|
||||
"name": "roundrobin"
|
||||
},
|
||||
"link_watch": {
|
||||
"name": "ethtool"
|
||||
}
|
||||
}
|
||||
team.notify-peers-count: -1 (unset)
|
||||
team.notify-peers-interval: -1 (unset)
|
||||
team.mcast-rejoin-count: -1 (unset)
|
||||
team.mcast-rejoin-interval: -1 (unset)
|
||||
team.runner: roundrobin
|
||||
team.runner-hwaddr-policy: --
|
||||
team.runner-tx-hash: --
|
||||
team.runner-tx-balancer: --
|
||||
team.runner-tx-balancer-interval: -1 (unset)
|
||||
team.runner-active: yes
|
||||
team.runner-fast-rate: no
|
||||
team.runner-sys-prio: -1 (unset)
|
||||
team.runner-min-ports: -1 (unset)
|
||||
team.runner-agg-select-policy: --
|
||||
team.link-watchers: name=ethtool
|
||||
proxy.method: none
|
||||
proxy.browser-only: no
|
||||
proxy.pac-url: --
|
||||
proxy.pac-script: --
|
1
tests/fixtures/generic/nmcli-team-port-config-blank.json
vendored
Normal file
1
tests/fixtures/generic/nmcli-team-port-config-blank.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
[{"connection_id":"team1","connection_uuid":"a85e0eba-7140-4963-963d-ca9a0f6516ed","connection_stable_id":null,"connection_type":"802-3-ethernet","connection_interface_name":null,"connection_autoconnect":"yes","connection_autoconnect_priority":0,"connection_autoconnect_retries":-1,"connection_autoconnect_retries_text":"default","connection_multi_connect":0,"connection_multi_connect_text":"default","connection_auth_retries":-1,"connection_timestamp":0,"connection_read_only":"no","connection_permissions":null,"connection_zone":null,"connection_master":"d229f048-5c75-40f4-a7ff-61174546c506","connection_slave_type":"team","connection_autoconnect_slaves":-1,"connection_autoconnect_slaves_text":"default","connection_secondaries":null,"connection_gateway_ping_timeout":0,"connection_metered":"unknown","connection_lldp":"default","connection_mdns":-1,"connection_mdns_text":"default","connection_llmnr":-1,"connection_llmnr_text":"default","connection_dns_over_tls":-1,"connection_dns_over_tls_text":"default","connection_wait_device_timeout":-1,"802_3_ethernet_port":null,"802_3_ethernet_speed":0,"802_3_ethernet_duplex":null,"802_3_ethernet_auto_negotiate":"no","802_3_ethernet_mac_address":null,"802_3_ethernet_cloned_mac_address":null,"802_3_ethernet_generate_mac_address_mask":null,"802_3_ethernet_mac_address_blacklist":null,"802_3_ethernet_mtu":"auto","802_3_ethernet_s390_subchannels":null,"802_3_ethernet_s390_nettype":null,"802_3_ethernet_s390_options":null,"802_3_ethernet_wake_on_lan":"default","802_3_ethernet_wake_on_lan_password":null,"802_3_ethernet_accept_all_mac_addresses":-1,"802_3_ethernet_accept_all_mac_addresses_text":"default","team_port_config":null,"team_port_queue_id":0,"team_port_queue_id_text":"default","team_port_prio":0,"team_port_prio_text":"unset","team_port_sticky":"no","team_port_lacp_prio":0,"team_port_lacp_key":0,"team_port_lacp_key_text":"default","team_port_link_watchers":null}]
|
47
tests/fixtures/generic/nmcli-team-port-config-blank.out
vendored
Normal file
47
tests/fixtures/generic/nmcli-team-port-config-blank.out
vendored
Normal file
@ -0,0 +1,47 @@
|
||||
connection.id: team1
|
||||
connection.uuid: a85e0eba-7140-4963-963d-ca9a0f6516ed
|
||||
connection.stable-id: --
|
||||
connection.type: 802-3-ethernet
|
||||
connection.interface-name: --
|
||||
connection.autoconnect: yes
|
||||
connection.autoconnect-priority: 0
|
||||
connection.autoconnect-retries: -1 (default)
|
||||
connection.multi-connect: 0 (default)
|
||||
connection.auth-retries: -1
|
||||
connection.timestamp: 0
|
||||
connection.read-only: no
|
||||
connection.permissions: --
|
||||
connection.zone: --
|
||||
connection.master: d229f048-5c75-40f4-a7ff-61174546c506
|
||||
connection.slave-type: team
|
||||
connection.autoconnect-slaves: -1 (default)
|
||||
connection.secondaries: --
|
||||
connection.gateway-ping-timeout: 0
|
||||
connection.metered: unknown
|
||||
connection.lldp: default
|
||||
connection.mdns: -1 (default)
|
||||
connection.llmnr: -1 (default)
|
||||
connection.dns-over-tls: -1 (default)
|
||||
connection.wait-device-timeout: -1
|
||||
802-3-ethernet.port: --
|
||||
802-3-ethernet.speed: 0
|
||||
802-3-ethernet.duplex: --
|
||||
802-3-ethernet.auto-negotiate: no
|
||||
802-3-ethernet.mac-address: --
|
||||
802-3-ethernet.cloned-mac-address: --
|
||||
802-3-ethernet.generate-mac-address-mask:--
|
||||
802-3-ethernet.mac-address-blacklist: --
|
||||
802-3-ethernet.mtu: auto
|
||||
802-3-ethernet.s390-subchannels: --
|
||||
802-3-ethernet.s390-nettype: --
|
||||
802-3-ethernet.s390-options: --
|
||||
802-3-ethernet.wake-on-lan: default
|
||||
802-3-ethernet.wake-on-lan-password: --
|
||||
802-3-ethernet.accept-all-mac-addresses:-1 (default)
|
||||
team-port.config: --
|
||||
team-port.queue-id: 0 (default)
|
||||
team-port.prio: 0 (unset)
|
||||
team-port.sticky: no
|
||||
team-port.lacp-prio: 0
|
||||
team-port.lacp-key: 0 (default)
|
||||
team-port.link-watchers: --
|
1
tests/fixtures/generic/nmcli-team-port-config.json
vendored
Normal file
1
tests/fixtures/generic/nmcli-team-port-config.json
vendored
Normal file
@ -0,0 +1 @@
|
||||
[{"connection_id":"team1","connection_uuid":"a85e0eba-7140-4963-963d-ca9a0f6516ed","connection_stable_id":null,"connection_type":"802-3-ethernet","connection_interface_name":null,"connection_autoconnect":"yes","connection_autoconnect_priority":0,"connection_autoconnect_retries":-1,"connection_autoconnect_retries_text":"default","connection_multi_connect":0,"connection_multi_connect_text":"default","connection_auth_retries":-1,"connection_timestamp":0,"connection_read_only":"no","connection_permissions":null,"connection_zone":null,"connection_master":"d229f048-5c75-40f4-a7ff-61174546c506","connection_slave_type":"team","connection_autoconnect_slaves":-1,"connection_autoconnect_slaves_text":"default","connection_secondaries":null,"connection_gateway_ping_timeout":0,"connection_metered":"unknown","connection_lldp":"default","connection_mdns":-1,"connection_mdns_text":"default","connection_llmnr":-1,"connection_llmnr_text":"default","connection_dns_over_tls":-1,"connection_dns_over_tls_text":"default","connection_wait_device_timeout":-1,"802_3_ethernet_port":null,"802_3_ethernet_speed":0,"802_3_ethernet_duplex":null,"802_3_ethernet_auto_negotiate":"no","802_3_ethernet_mac_address":null,"802_3_ethernet_cloned_mac_address":null,"802_3_ethernet_generate_mac_address_mask":null,"802_3_ethernet_mac_address_blacklist":null,"802_3_ethernet_mtu":"auto","802_3_ethernet_s390_subchannels":null,"802_3_ethernet_s390_nettype":null,"802_3_ethernet_s390_options":null,"802_3_ethernet_wake_on_lan":"default","802_3_ethernet_wake_on_lan_password":null,"802_3_ethernet_accept_all_mac_addresses":-1,"802_3_ethernet_accept_all_mac_addresses_text":"default","team_port_config":{"queue_id":0,"prio":0,"lacp_prio":0,"lacp_key":0},"team_port_queue_id":0,"team_port_queue_id_text":"default","team_port_prio":0,"team_port_prio_text":"unset","team_port_sticky":"no","team_port_lacp_prio":0,"team_port_lacp_key":0,"team_port_lacp_key_text":"default","team_port_link_watchers":null}]
|
52
tests/fixtures/generic/nmcli-team-port-config.out
vendored
Normal file
52
tests/fixtures/generic/nmcli-team-port-config.out
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
connection.id: team1
|
||||
connection.uuid: a85e0eba-7140-4963-963d-ca9a0f6516ed
|
||||
connection.stable-id: --
|
||||
connection.type: 802-3-ethernet
|
||||
connection.interface-name: --
|
||||
connection.autoconnect: yes
|
||||
connection.autoconnect-priority: 0
|
||||
connection.autoconnect-retries: -1 (default)
|
||||
connection.multi-connect: 0 (default)
|
||||
connection.auth-retries: -1
|
||||
connection.timestamp: 0
|
||||
connection.read-only: no
|
||||
connection.permissions: --
|
||||
connection.zone: --
|
||||
connection.master: d229f048-5c75-40f4-a7ff-61174546c506
|
||||
connection.slave-type: team
|
||||
connection.autoconnect-slaves: -1 (default)
|
||||
connection.secondaries: --
|
||||
connection.gateway-ping-timeout: 0
|
||||
connection.metered: unknown
|
||||
connection.lldp: default
|
||||
connection.mdns: -1 (default)
|
||||
connection.llmnr: -1 (default)
|
||||
connection.dns-over-tls: -1 (default)
|
||||
connection.wait-device-timeout: -1
|
||||
802-3-ethernet.port: --
|
||||
802-3-ethernet.speed: 0
|
||||
802-3-ethernet.duplex: --
|
||||
802-3-ethernet.auto-negotiate: no
|
||||
802-3-ethernet.mac-address: --
|
||||
802-3-ethernet.cloned-mac-address: --
|
||||
802-3-ethernet.generate-mac-address-mask:--
|
||||
802-3-ethernet.mac-address-blacklist: --
|
||||
802-3-ethernet.mtu: auto
|
||||
802-3-ethernet.s390-subchannels: --
|
||||
802-3-ethernet.s390-nettype: --
|
||||
802-3-ethernet.s390-options: --
|
||||
802-3-ethernet.wake-on-lan: default
|
||||
802-3-ethernet.wake-on-lan-password: --
|
||||
802-3-ethernet.accept-all-mac-addresses:-1 (default)
|
||||
team-port.config: {
|
||||
"queue_id": 0,
|
||||
"prio": 0,
|
||||
"lacp_prio": 0,
|
||||
"lacp_key": 0
|
||||
}
|
||||
team-port.queue-id: 0 (default)
|
||||
team-port.prio: 0 (unset)
|
||||
team-port.sticky: no
|
||||
team-port.lacp-prio: 0
|
||||
team-port.lacp-key: 0 (default)
|
||||
team-port.link-watchers: --
|
@ -1,7 +1,10 @@
|
||||
import unittest
|
||||
import os
|
||||
import re
|
||||
from typing import Generator
|
||||
import jc
|
||||
|
||||
THIS_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
class MyTests(unittest.TestCase):
|
||||
def test_jc_parse_csv(self):
|
||||
@ -40,5 +43,27 @@ class MyTests(unittest.TestCase):
|
||||
def test_jc_slurpable_parser_mod_list_is_list(self):
|
||||
self.assertIsInstance(jc.slurpable_parser_mod_list(), list)
|
||||
|
||||
def test_version_info(self):
|
||||
"""Test that the lib and pkg version strings match."""
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'jc/lib.py'), 'r', encoding='utf-8') as f:
|
||||
lib_file = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'setup.py'), 'r', encoding='utf-8') as f:
|
||||
pkg_file = f.read()
|
||||
|
||||
lib_pattern = re.compile(r'''__version__ = \'(?P<ver>\d+\.\d+\.\d+)\'''')
|
||||
pkg_pattern = re.compile(r''' version=\'(?P<ver>\d+\.\d+\.\d+)\'''')
|
||||
|
||||
lib_match = re.search(lib_pattern, lib_file)
|
||||
pkg_match = re.search(pkg_pattern, pkg_file)
|
||||
|
||||
if lib_match:
|
||||
lib_version = lib_match.groupdict()['ver']
|
||||
|
||||
if pkg_match:
|
||||
pkg_version = pkg_match.groupdict()['ver']
|
||||
|
||||
self.assertEqual(lib_version, pkg_version)
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
@ -52,6 +52,21 @@ class MyTests(unittest.TestCase):
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show.out'), 'r', encoding='utf-8') as f:
|
||||
fedora32_nmcli_device_show = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-config.out'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_config = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-config-blank.out'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_config_blank = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-port-config.out'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_port_config = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-port-config-blank.out'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_port_config_blank = f.read()
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-and-team-port-config.out'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_and_team_port_config = f.read()
|
||||
|
||||
|
||||
# output
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/centos-7.7/nmcli-connection-all.json'), 'r', encoding='utf-8') as f:
|
||||
@ -93,6 +108,21 @@ class MyTests(unittest.TestCase):
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/fedora32/nmcli-device-show.json'), 'r', encoding='utf-8') as f:
|
||||
fedora32_nmcli_device_show_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-config.json'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_config_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-config-blank.json'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_config_blank_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-port-config.json'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_port_config_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-port-config-blank.json'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_port_config_blank_json = json.loads(f.read())
|
||||
|
||||
with open(os.path.join(THIS_DIR, os.pardir, 'tests/fixtures/generic/nmcli-team-and-team-port-config.json'), 'r', encoding='utf-8') as f:
|
||||
generic_nmcli_team_and_team_port_config_json = json.loads(f.read())
|
||||
|
||||
|
||||
|
||||
def test_nmcli_nodata(self):
|
||||
@ -189,112 +219,31 @@ class MyTests(unittest.TestCase):
|
||||
"""
|
||||
Test nmcli with team.config JSON value
|
||||
"""
|
||||
data = '''connection.id: Team connection 1
|
||||
connection.uuid: 258e02c2-d9f9-44bb-8d27-887e11aa1828
|
||||
connection.stable-id: --
|
||||
connection.type: team
|
||||
connection.interface-name: team0
|
||||
connection.autoconnect: yes
|
||||
connection.autoconnect-priority: 0
|
||||
connection.autoconnect-retries: -1 (default)
|
||||
connection.multi-connect: 0 (default)
|
||||
connection.auth-retries: -1
|
||||
connection.timestamp: 0
|
||||
connection.read-only: no
|
||||
connection.permissions: --
|
||||
connection.zone: --
|
||||
connection.master: --
|
||||
connection.slave-type: --
|
||||
connection.autoconnect-slaves: -1 (default)
|
||||
connection.secondaries: --
|
||||
connection.gateway-ping-timeout: 0
|
||||
connection.metered: unknown
|
||||
connection.lldp: default
|
||||
connection.mdns: -1 (default)
|
||||
connection.llmnr: -1 (default)
|
||||
connection.dns-over-tls: -1 (default)
|
||||
connection.wait-device-timeout: -1
|
||||
ipv4.method: auto
|
||||
ipv4.dns: --
|
||||
ipv4.dns-search: --
|
||||
ipv4.dns-options: --
|
||||
ipv4.dns-priority: 0
|
||||
ipv4.addresses: --
|
||||
ipv4.gateway: --
|
||||
ipv4.routes: --
|
||||
ipv4.route-metric: -1
|
||||
ipv4.route-table: 0 (unspec)
|
||||
ipv4.routing-rules: --
|
||||
ipv4.ignore-auto-routes: no
|
||||
ipv4.ignore-auto-dns: no
|
||||
ipv4.dhcp-client-id: --
|
||||
ipv4.dhcp-iaid: --
|
||||
ipv4.dhcp-timeout: 0 (default)
|
||||
ipv4.dhcp-send-hostname: yes
|
||||
ipv4.dhcp-hostname: --
|
||||
ipv4.dhcp-fqdn: --
|
||||
ipv4.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv4.never-default: no
|
||||
ipv4.may-fail: yes
|
||||
ipv4.required-timeout: -1 (default)
|
||||
ipv4.dad-timeout: -1 (default)
|
||||
ipv4.dhcp-vendor-class-identifier: --
|
||||
ipv4.dhcp-reject-servers: --
|
||||
ipv6.method: auto
|
||||
ipv6.dns: --
|
||||
ipv6.dns-search: --
|
||||
ipv6.dns-options: --
|
||||
ipv6.dns-priority: 0
|
||||
ipv6.addresses: --
|
||||
ipv6.gateway: --
|
||||
ipv6.routes: --
|
||||
ipv6.route-metric: -1
|
||||
ipv6.route-table: 0 (unspec)
|
||||
ipv6.routing-rules: --
|
||||
ipv6.ignore-auto-routes: no
|
||||
ipv6.ignore-auto-dns: no
|
||||
ipv6.never-default: no
|
||||
ipv6.may-fail: yes
|
||||
ipv6.required-timeout: -1 (default)
|
||||
ipv6.ip6-privacy: -1 (unknown)
|
||||
ipv6.addr-gen-mode: stable-privacy
|
||||
ipv6.ra-timeout: 0 (default)
|
||||
ipv6.dhcp-duid: --
|
||||
ipv6.dhcp-iaid: --
|
||||
ipv6.dhcp-timeout: 0 (default)
|
||||
ipv6.dhcp-send-hostname: yes
|
||||
ipv6.dhcp-hostname: --
|
||||
ipv6.dhcp-hostname-flags: 0x0 (none)
|
||||
ipv6.token: --
|
||||
team.config: {
|
||||
"runner": {
|
||||
"name": "roundrobin"
|
||||
},
|
||||
"link_watch": {
|
||||
"name": "ethtool"
|
||||
}
|
||||
}
|
||||
team.notify-peers-count: -1 (unset)
|
||||
team.notify-peers-interval: -1 (unset)
|
||||
team.mcast-rejoin-count: -1 (unset)
|
||||
team.mcast-rejoin-interval: -1 (unset)
|
||||
team.runner: roundrobin
|
||||
team.runner-hwaddr-policy: --
|
||||
team.runner-tx-hash: --
|
||||
team.runner-tx-balancer: --
|
||||
team.runner-tx-balancer-interval: -1 (unset)
|
||||
team.runner-active: yes
|
||||
team.runner-fast-rate: no
|
||||
team.runner-sys-prio: -1 (unset)
|
||||
team.runner-min-ports: -1 (unset)
|
||||
team.runner-agg-select-policy: --
|
||||
team.link-watchers: name=ethtool
|
||||
proxy.method: none
|
||||
proxy.browser-only: no
|
||||
proxy.pac-url: --
|
||||
proxy.pac-script: --'''
|
||||
expected = [{'connection_id': 'Team connection 1', 'connection_uuid': '258e02c2-d9f9-44bb-8d27-887e11aa1828', 'connection_stable_id': None, 'connection_type': 'team', 'connection_interface_name': 'team0', 'connection_autoconnect': 'yes', 'connection_autoconnect_priority': 0, 'connection_autoconnect_retries': -1, 'connection_autoconnect_retries_text': 'default', 'connection_multi_connect': 0, 'connection_multi_connect_text': 'default', 'connection_auth_retries': -1, 'connection_timestamp': 0, 'connection_read_only': 'no', 'connection_permissions': None, 'connection_zone': None, 'connection_master': None, 'connection_slave_type': None, 'connection_autoconnect_slaves': -1, 'connection_autoconnect_slaves_text': 'default', 'connection_secondaries': None, 'connection_gateway_ping_timeout': 0, 'connection_metered': 'unknown', 'connection_lldp': 'default', 'connection_mdns': -1, 'connection_mdns_text': 'default', 'connection_llmnr': -1, 'connection_llmnr_text': 'default', 'connection_dns_over_tls': -1, 'connection_dns_over_tls_text': 'default', 'connection_wait_device_timeout': -1, 'ipv4_method': 'auto', 'ipv4_dns': None, 'ipv4_dns_search': None, 'ipv4_dns_options': None, 'ipv4_dns_priority': 0, 'ipv4_addresses': None, 'ipv4_gateway': None, 'ipv4_routes': None, 'ipv4_route_metric': -1, 'ipv4_route_table': 0, 'ipv4_route_table_text': 'unspec', 'ipv4_routing_rules': None, 'ipv4_ignore_auto_routes': 'no', 'ipv4_ignore_auto_dns': 'no', 'ipv4_dhcp_client_id': None, 'ipv4_dhcp_iaid': None, 'ipv4_dhcp_timeout': 0, 'ipv4_dhcp_timeout_text': 'default', 'ipv4_dhcp_send_hostname': 'yes', 'ipv4_dhcp_hostname': None, 'ipv4_dhcp_fqdn': None, 'ipv4_dhcp_hostname_flags': '0x0', 'ipv4_dhcp_hostname_flags_text': 'none', 'ipv4_never_default': 'no', 'ipv4_may_fail': 'yes', 'ipv4_required_timeout': -1, 'ipv4_required_timeout_text': 'default', 'ipv4_dad_timeout': -1, 'ipv4_dad_timeout_text': 'default', 'ipv4_dhcp_vendor_class_identifier': None, 'ipv4_dhcp_reject_servers': None, 'ipv6_method': 'auto', 'ipv6_dns': None, 'ipv6_dns_search': None, 'ipv6_dns_options': None, 'ipv6_dns_priority': 0, 'ipv6_addresses': None, 'ipv6_gateway': None, 'ipv6_routes': None, 'ipv6_route_metric': -1, 'ipv6_route_table': 0, 'ipv6_route_table_text': 'unspec', 'ipv6_routing_rules': None, 'ipv6_ignore_auto_routes': 'no', 'ipv6_ignore_auto_dns': 'no', 'ipv6_never_default': 'no', 'ipv6_may_fail': 'yes', 'ipv6_required_timeout': -1, 'ipv6_required_timeout_text': 'default', 'ipv6_ip6_privacy': -1, 'ipv6_ip6_privacy_text': 'unknown', 'ipv6_addr_gen_mode': 'stable-privacy', 'ipv6_ra_timeout': 0, 'ipv6_ra_timeout_text': 'default', 'ipv6_dhcp_duid': None, 'ipv6_dhcp_iaid': None, 'ipv6_dhcp_timeout': 0, 'ipv6_dhcp_timeout_text': 'default', 'ipv6_dhcp_send_hostname': 'yes', 'ipv6_dhcp_hostname': None, 'ipv6_dhcp_hostname_flags': '0x0', 'ipv6_dhcp_hostname_flags_text': 'none', 'ipv6_token': None, 'team_config': {'runner': {'name': 'roundrobin'}, 'link_watch': {'name': 'ethtool'}}, 'team_notify_peers_count': -1, 'team_notify_peers_count_text': 'unset', 'team_notify_peers_interval': -1, 'team_notify_peers_interval_text': 'unset', 'team_mcast_rejoin_count': -1, 'team_mcast_rejoin_count_text': 'unset', 'team_mcast_rejoin_interval': -1, 'team_mcast_rejoin_interval_text': 'unset', 'team_runner': 'roundrobin', 'team_runner_hwaddr_policy': None, 'team_runner_tx_hash': None, 'team_runner_tx_balancer': None, 'team_runner_tx_balancer_interval': -1, 'team_runner_tx_balancer_interval_text': 'unset', 'team_runner_active': 'yes', 'team_runner_fast_rate': 'no', 'team_runner_sys_prio': -1, 'team_runner_sys_prio_text': 'unset', 'team_runner_min_ports': -1, 'team_runner_min_ports_text': 'unset', 'team_runner_agg_select_policy': None, 'team_link_watchers': 'name=ethtool', 'proxy_method': 'none', 'proxy_browser_only': 'no', 'proxy_pac_url': None, 'proxy_pac_script': None}]
|
||||
self.assertEqual(jc.parsers.nmcli.parse(data, quiet=True), expected)
|
||||
self.assertEqual(jc.parsers.nmcli.parse(self.generic_nmcli_team_config, quiet=True), self.generic_nmcli_team_config_json)
|
||||
|
||||
def test_nmcli_team_config_blank(self):
|
||||
"""
|
||||
Test nmcli with blank team.config JSON value
|
||||
"""
|
||||
self.assertEqual(jc.parsers.nmcli.parse(self.generic_nmcli_team_config_blank, quiet=True), self.generic_nmcli_team_config_blank_json)
|
||||
|
||||
def test_nmcli_team_port_config(self):
|
||||
"""
|
||||
Test nmcli with team-port.config JSON value
|
||||
"""
|
||||
self.assertEqual(jc.parsers.nmcli.parse(self.generic_nmcli_team_port_config, quiet=True), self.generic_nmcli_team_port_config_json)
|
||||
|
||||
def test_nmcli_team_port_config_blank(self):
|
||||
"""
|
||||
Test nmcli with blank team-port.config JSON value
|
||||
"""
|
||||
self.assertEqual(jc.parsers.nmcli.parse(self.generic_nmcli_team_port_config_blank, quiet=True), self.generic_nmcli_team_port_config_blank_json)
|
||||
|
||||
def test_nmcli_team_and_team_port_config_blank(self):
|
||||
"""
|
||||
Test nmcli with both team.config and team-port.config JSON value
|
||||
"""
|
||||
self.assertEqual(jc.parsers.nmcli.parse(self.generic_nmcli_team_and_team_port_config, quiet=True), self.generic_nmcli_team_and_team_port_config_json)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
Reference in New Issue
Block a user