From 89bad7fc2b4023b10b6eeb7ff1f8f18b71731cb6 Mon Sep 17 00:00:00 2001 From: Kelly Brazil Date: Fri, 15 Nov 2019 19:13:53 -0800 Subject: [PATCH] remove systemctl list-machines parser --- changelog.txt | 2 +- docgen.sh | 1 - docs/parsers/systemctl_lm.md | 76 ------------------------ jc/cli.py | 3 - jc/parsers/systemctl_lm.py | 110 ----------------------------------- 5 files changed, 1 insertion(+), 191 deletions(-) delete mode 100644 docs/parsers/systemctl_lm.md delete mode 100644 jc/parsers/systemctl_lm.py diff --git a/changelog.txt b/changelog.txt index 8db8205f..f2688545 100644 --- a/changelog.txt +++ b/changelog.txt @@ -4,7 +4,7 @@ jc changelog - Add ss parser - Add stat parser - Add /etc/hosts parser -- Add systemctl parser +- Add systemctl parser (includes list-jobs, list-sockets, and list-unit-files) - Add -r and raw=True options. By default, jc will now convert numbers and boolean, if possible, and add other semantic information, while the raw output will keep all values as text and provide a more literal JSON output - Add -q and quiet=True options to suppress warnings to stderr - Add -d option to debug parsing issues diff --git a/docgen.sh b/docgen.sh index 667ed0f1..9c097e0e 100755 --- a/docgen.sh +++ b/docgen.sh @@ -27,7 +27,6 @@ pydocmd simple jc.parsers.ss+ > ../docs/parsers/ss.md pydocmd simple jc.parsers.stat+ > ../docs/parsers/stat.md pydocmd simple jc.parsers.systemctl+ > ../docs/parsers/systemctl.md pydocmd simple jc.parsers.systemctl_lj+ > ../docs/parsers/systemctl_lj.md -pydocmd simple jc.parsers.systemctl_lm+ > ../docs/parsers/systemctl_lm.md pydocmd simple jc.parsers.systemctl_ls+ > ../docs/parsers/systemctl_ls.md pydocmd simple jc.parsers.systemctl_luf+ > ../docs/parsers/systemctl_luf.md pydocmd simple jc.parsers.uname+ > ../docs/parsers/uname.md diff --git a/docs/parsers/systemctl_lm.md b/docs/parsers/systemctl_lm.md deleted file mode 100644 index 4f3e19f2..00000000 --- a/docs/parsers/systemctl_lm.md +++ /dev/null @@ -1,76 +0,0 @@ -# jc.parsers.systemctl_lm -jc - JSON CLI output utility systemctl-lm Parser - -Usage: - specify --systemctl-luf as the first argument if the piped input is coming from systemctl list-machines - -Examples: - - $ systemctl -a | jc --systemctl -p - [ - { - "unit": "proc-sys-fs-binfmt_misc.automount", - "load": "loaded", - "active": "active", - "sub": "waiting", - "description": "Arbitrary Executable File Formats File System Automount Point" - }, - { - "unit": "dev-block-8:2.device", - "load": "loaded", - "active": "active", - "sub": "plugged", - "description": "LVM PV 3klkIj-w1qk-DkJi-0XBJ-y3o7-i2Ac-vHqWBM on /dev/sda2 2" - }, - { - "unit": "dev-cdrom.device", - "load": "loaded", - "active": "active", - "sub": "plugged", - "description": "VMware_Virtual_IDE_CDROM_Drive" - }, - ... - ] - -## process -```python -process(proc_data) -``` - -Final processing to conform to the schema. - -Parameters: - - proc_data: (dictionary) raw structured data to process - -Returns: - - dictionary structured data with the following schema: - - [ - { - "unit": string, - "load": string, - "active": string, - "sub": string, - "description": string - } - ] - -## parse -```python -parse(data, raw=False, quiet=False) -``` - -Main text parsing function - -Parameters: - - data: (string) text data to parse - raw: (boolean) output preprocessed JSON if True - quiet: (boolean) suppress warning messages if True - -Returns: - - dictionary raw or processed structured data - diff --git a/jc/cli.py b/jc/cli.py index 9a146fcd..0c03235d 100644 --- a/jc/cli.py +++ b/jc/cli.py @@ -31,7 +31,6 @@ import jc.parsers.ss import jc.parsers.stat import jc.parsers.systemctl import jc.parsers.systemctl_lj -# import jc.parsers.systemctl_lm import jc.parsers.systemctl_ls import jc.parsers.systemctl_luf import jc.parsers.uname @@ -73,7 +72,6 @@ def helptext(message): --stat stat parser --systemctl systemctl parser --systemctl-lj systemctl list-jobs parser - --systemctl-lm systemctl list-machines parser --systemctl-ls systemctl list-sockets parser --systemctl-luf systemctl list-unit-files parser --uname uname -a parser @@ -143,7 +141,6 @@ def main(): '--stat': jc.parsers.stat.parse, '--systemctl': jc.parsers.systemctl.parse, '--systemctl-lj': jc.parsers.systemctl_lj.parse, - # '--systemctl-lm': jc.parsers.systemctl_lm.parse, '--systemctl-ls': jc.parsers.systemctl_ls.parse, '--systemctl-luf': jc.parsers.systemctl_luf.parse, '--uname': jc.parsers.uname.parse, diff --git a/jc/parsers/systemctl_lm.py b/jc/parsers/systemctl_lm.py deleted file mode 100644 index a3202d4d..00000000 --- a/jc/parsers/systemctl_lm.py +++ /dev/null @@ -1,110 +0,0 @@ -"""jc - JSON CLI output utility systemctl-lm Parser - -Usage: - specify --systemctl-luf as the first argument if the piped input is coming from systemctl list-machines - -Examples: - - $ systemctl -a | jc --systemctl -p - [ - { - "unit": "proc-sys-fs-binfmt_misc.automount", - "load": "loaded", - "active": "active", - "sub": "waiting", - "description": "Arbitrary Executable File Formats File System Automount Point" - }, - { - "unit": "dev-block-8:2.device", - "load": "loaded", - "active": "active", - "sub": "plugged", - "description": "LVM PV 3klkIj-w1qk-DkJi-0XBJ-y3o7-i2Ac-vHqWBM on /dev/sda2 2" - }, - { - "unit": "dev-cdrom.device", - "load": "loaded", - "active": "active", - "sub": "plugged", - "description": "VMware_Virtual_IDE_CDROM_Drive" - }, - ... - ] -""" -import jc.utils - - -def process(proc_data): - """ - Final processing to conform to the schema. - - Parameters: - - proc_data: (dictionary) raw structured data to process - - Returns: - - dictionary structured data with the following schema: - - [ - { - "unit": string, - "load": string, - "active": string, - "sub": string, - "description": string - } - ] - """ - # nothing more to process - return proc_data - - -def parse(data, raw=False, quiet=False): - """ - Main text parsing function - - Parameters: - - data: (string) text data to parse - raw: (boolean) output preprocessed JSON if True - quiet: (boolean) suppress warning messages if True - - Returns: - - dictionary raw or processed structured data - """ - - # compatible options: linux, darwin, cygwin, win32, aix, systemctlbsd - compatible = ['linux'] - - if not quiet: - jc.utils.compatibility(__name__, compatible) - - linedata = data.splitlines() - # Clear any blank lines - linedata = list(filter(None, linedata)) - # clean up non-ascii characters, if any - cleandata = [] - for entry in linedata: - cleandata.append(entry.encode('ascii', errors='ignore').decode()) - - header_text = cleandata[0] - header_text = header_text.lower().replace('unit file', 'unit_file') - header_list = header_text.split() - - raw_output = [] - - for entry in cleandata[1:]: - if entry.find('unit files listed.') != -1: - break - - else: - entry_list = entry.split(maxsplit=4) - output_line = dict(zip(header_list, entry_list)) - raw_output.append(output_line) - - if raw: - return raw_output - else: - return process(raw_output)