Repository URL to install this package:
Version:
4.0.105 ▾
|
python3-workloadmgrclient
/
usr
/
lib
/
python3
/
dist-packages
/
workloadmgrclient
/
v1
/
setting.py
|
---|
import six
from cliff import show, lister
from collections import defaultdict
from osc_lib import utils as osc_utils
from workloadmgrclient import utils
from workloadmgrclient.openstack.common import strutils
from workloadmgrclient.v1 import WorkloadmgrCommand
class SettingsCommand(WorkloadmgrCommand):
resource = "settings"
class CreateSettings(SettingsCommand):
"""Creates a setting."""
@staticmethod
def _add_arguments(parser):
parser.add_argument("name", metavar="<name>", help="name of the setting")
parser.add_argument("value", metavar="<vaule>", help="Value of the setting")
parser.add_argument(
"--description",
metavar="<description>",
help="Optional description. (Default=None)",
default=None,
)
parser.add_argument(
"--category",
metavar="<category>",
help="Optional category. (Default=None)",
default=None,
)
parser.add_argument(
"--type",
metavar="<type>",
help="Optional type of setting. (Default=None)",
default=None,
)
parser.add_argument(
"--is-public",
type=strutils.bool_from_string,
metavar="{True,False}",
help="Make setting accessible to the public.",
default=False,
)
parser.add_argument(
"--is-hidden",
type=strutils.bool_from_string,
metavar="{True,False}",
help="Make setting hidden.",
default=False,
)
parser.add_argument(
"--metadata",
metavar="<key=value>",
action="append",
dest="metadata",
default=[],
help="Specify a key value pairs to include in the settings metadata"
" Specify option multiple times to include multiple keys. "
"key=value",
)
def take_action(self, parsed_args):
client = self.get_client()
metadata = defaultdict()
for metadata_str in parsed_args.metadata:
err_msg = (
"Invalid metadata argument '%s'. metadata arguments must be of the "
"form --metadata <key=value>" % metadata_str
)
try:
k, v = metadata_str.split("=", 1)
except ValueError:
raise exceptions.CommandError(err_msg)
metadata[k.strip()] = v.strip()
client.create(
parsed_args.name,
parsed_args.value,
parsed_args.description,
parsed_args.category,
parsed_args.type,
parsed_args.is_public,
parsed_args.is_hidden,
metadata,
)
class ListSettings(SettingsCommand, lister.Lister):
"""List all the settings."""
@staticmethod
def _add_arguments(parser):
parser.add_argument(
"--get_hidden",
type=strutils.bool_from_string,
metavar="{True,False}",
help="show hidden settings",
default=False,
)
def take_action(self, parsed_args):
client = self.get_client()
search_opts = {"get_hidden": parsed_args.get_hidden}
setting_objs = client.list(search_opts=search_opts) or {}
if len(setting_objs):
setting_objs = setting_objs[1].get("settings", {})
if not setting_objs:
print("Setting not found")
data = []
for key, value in setting_objs.items():
data.append({"name": key, "value": value})
return (
["Name", "Value"],
(osc_utils.get_dict_properties(obj, ["name", "value"]) for obj in data),
)
class ShowSettings(SettingsCommand, show.ShowOne):
"""Show details of a setting."""
@staticmethod
def _add_arguments(parser):
parser.add_argument(
"setting_name", metavar="<setting_name>", help="name of the setting."
)
parser.add_argument(
"--get_hidden",
type=strutils.bool_from_string,
metavar="{True,False}",
help="show hidden settings",
default=False,
)
def take_action(self, parsed_args):
client = self.get_client()
setting_obj = client.get(parsed_args.setting_name, parsed_args.get_hidden) or {}
if not setting_obj:
print("Setting not found")
columns = list(setting_obj.keys())
data = osc_utils.get_dict_properties(setting_obj, columns)
return columns, data
class UpdateSettings(SettingsCommand):
"""Update a setting."""
@staticmethod
def _add_arguments(parser):
parser.add_argument("name", metavar="<name>", help="name of the setting")
parser.add_argument("value", metavar="<vaule>", help="Value of the setting")
parser.add_argument(
"--description",
metavar="<description>",
help="Optional description. (Default=None)",
default=None,
)
parser.add_argument(
"--category",
metavar="<category>",
help="Optional category. (Default=None)",
default=None,
)
parser.add_argument(
"--type",
metavar="<type>",
help="Optional type of setting. (Default=None)",
default=None,
)
parser.add_argument(
"--is-public",
type=strutils.bool_from_string,
metavar="{True,False}",
help="Make setting accessible to the public.",
default=False,
)
parser.add_argument(
"--is-hidden",
type=strutils.bool_from_string,
metavar="{True,False}",
help="Make setting hidden.",
default=False,
)
parser.add_argument(
"--metadata",
metavar="<key=value>",
action="append",
dest="metadata",
default=[],
help="Specify a key value pairs to include in the settings metadata "
"Specify option multiple times to include multiple keys. "
"key=value",
)
def take_action(self, parsed_args):
client = self.get_client()
metadata = defaultdict()
for metadata_str in parsed_args.metadata:
err_msg = (
"Invalid metadata argument '%s'. metadata arguments must be of the "
"form --metadata <key=value>" % metadata_str
)
try:
k, v = metadata_str.split("=", 1)
except ValueError:
raise exceptions.CommandError(err_msg)
metadata[k.strip()] = v.strip()
client.update(
parsed_args.name,
parsed_args.value,
parsed_args.description,
parsed_args.category,
parsed_args.type,
parsed_args.is_public,
parsed_args.is_hidden,
metadata,
)
class DeleteSettings(SettingsCommand):
"""Remove a setting."""
@staticmethod
def _add_arguments(parser):
parser.add_argument(
"setting_name", metavar="<setting_name>", help="name of setting to delete."
)
def take_action(self, parsed_args):
client = self.get_client()
client.delete(parsed_args.setting_name)