Skip to content

Commit

Permalink
Add set command
Browse files Browse the repository at this point in the history
$ zedenv set -v org.zedenv:bootloader=systemdboot \
                org.zedenv.grub:bootonzfs=no
Set 'org.zedenv:bootloader=systemdboot' successfully
Set 'org.zedenv.grub:bootonzfs=no' successfully
  • Loading branch information
johnramsden committed Jun 28, 2018
1 parent f175cba commit 6d7b1ef
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 56 deletions.
6 changes: 4 additions & 2 deletions zedenv/cli/get.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
"""Get boot environment properties cli"""
"""
Set boot environment properties cli
"""

import click
import pyzfscmds.cmd
Expand Down Expand Up @@ -143,7 +145,7 @@ def zedenv_get(zedenv_properties: Optional[list],


@click.command(name="get",
help="Get all boot environment properties that are set.")
help="Print boot environment properties.")
@click.option('--recursive', '-r',
is_flag=True,
help="Recursively get all zedenv properties from all datasets under ROOT.")
Expand Down
80 changes: 26 additions & 54 deletions zedenv/cli/set.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,64 +12,36 @@
from zedenv.lib.logger import ZELogger


def zedenv_get(zedenv_properties: Optional[list],
scripting: Optional[bool],
recursive: Optional[bool],
be_root: str):

property_index = 0
columns = ["property", "value"]

zedenv_props = zedenv_properties if zedenv_properties else ["all"]

if recursive:
property_index = property_index + 1
columns.insert(0, "name")

props = None
try:
props = pyzfscmds.cmd.zfs_get(be_root,
properties=zedenv_props,
scripting=scripting,
recursive=recursive,
columns=columns,
zfs_types=['filesystem'])
except RuntimeError as err:
ZELogger.log({
"level": "EXCEPTION",
"message": f"Failed to get zedenv properties\n{err}\n"
}, exit_on_error=True)

prop_list = props.splitlines()

if not scripting:
ZELogger.log({"level": "INFO", "message": prop_list[0]})

for p in prop_list:
split_prop = p.split()
if split_prop[property_index].startswith("org.zedenv"):
ZELogger.log({"level": "INFO", "message": p})


@click.command(name="get",
help="Get all boot environment properties that are set.")
@click.option('--recursive', '-r',
is_flag=True,
help="Recursively get all zedenv properties from all datasets under ROOT.")
@click.option('--scripting', '-H',
def zedenv_set(verbose: Optional[bool], zedenv_properties: Optional[list], be_root: str):

for prop in zedenv_properties:
try:
pyzfscmds.cmd.zfs_set(be_root, prop)
except RuntimeError:
ZELogger.log({
"level": "EXCEPTION",
"message": f"Failed to set zedenv property '{prop}'\n"
}, exit_on_error=True)

if verbose:
ZELogger.verbose_log({
"level": "INFO",
"message": f"Set '{prop}' successfully"
}, verbose)


@click.command(name="set",
help="Set boot environment properties.")
@click.option('--verbose', '-v',
is_flag=True,
help="Scripting output.")
@click.argument('zedenv_properties', nargs=-1, required=False)
def cli(zedenv_properties: Optional[list],
scripting: Optional[bool],
recursive: Optional[bool]):
help="Print verbose output.")
@click.argument('zedenv_properties', nargs=-1, required=True)
def cli(verbose: Optional[bool],
zedenv_properties: Optional[list]):

try:
zedenv.lib.check.startup_check()
except RuntimeError as err:
ZELogger.log({"level": "EXCEPTION", "message": err}, exit_on_error=True)

zedenv_get(zedenv_properties,
scripting,
recursive,
zedenv.lib.be.root())
zedenv_set(verbose, zedenv_properties, zedenv.lib.be.root())

0 comments on commit 6d7b1ef

Please sign in to comment.