Repository URL to install this package:
|
Version:
5.0.6.dev28-5.0 ▾
|
python3-workloadmgrclient-el8
/
usr
/
lib
/
python3.6
/
site-packages
/
workloadmgrclient
/
v1
/
managers
/
setting.py
|
|---|
# Copyright (c) 2013 TrilioData, Inc.
"""
Settings Interface (1.1 extension).
"""
import six
try:
from urllib import urlencode
except ImportError:
from urllib.parse import urlencode
from workloadmgrclient import base
class Setting(base.Resource):
"""A setting describes the type of a workload"""
def __repr__(self):
return "<Setting: %s>" % self.name
def delete(self):
"""Delete this setting."""
return self.manager.delete(self)
def create_bulk(self, dict_of_settings):
"""Create settings"""
return self.manager.create_bulk(self, dict_of_settings)
def get(self, setting_name):
"""Get setting"""
return self.manager.get(self, setting_name)
def list(self, get_hidden=False):
"""List settings"""
return self.manager.list(self, get_hidden)
def test_email(self, **kwargs):
"""Test email settings"""
return self.manager.test_email(self)
class SettingsManager(base.ManagerWithFind):
"""Manage :class:`Setting` resources."""
resource_class = Setting
def create_bulk(self, dict_of_settings):
"""Create settings bulk
:param dict_of_settings: all settings
"""
body = {"settings": dict_of_settings}
return self._create("/workloads/settings", body, "settings", return_raw=True)
def create(
self,
name,
value,
description=None,
category=None,
type=None,
is_public=False,
is_hidden=False,
metadata=None,
):
"""
Create a setting.
:param name: The name of the setting.
:param value: value to store
:param description: The description of the setting.
:param category: The category of the setting.
:param type: The type of the setting.
:param is_public: The is_public value of the setting.
:param is_hidden: The is_hidden value of the setting.
:param metadata: metadata of setting.
:rtype: :class:`Setting`
"""
body = {
"settings": [
{
"name": name,
"value": value,
"description": description,
"category": category,
"type": type,
"is_public": is_public,
"is_hidden": is_hidden,
"metadata": metadata,
}
]
}
return self._create("/settings", body, "settings", return_raw=True)
def update(
self,
name,
value,
description=None,
category=None,
type=None,
is_public=False,
is_hidden=False,
metadata=None,
):
"""
Update a setting.
:param name: The name of the setting.
:param value: value to store
:param description: The description of the setting.
:param category: The category of the setting.
:param type: The type of the setting.
:param is_public: The is_public value of the setting.
:param is_hidden: The is_hidden value of the setting.
:param metadata: metadata of setting.
"""
body = {
"settings": [
{
"name": name,
"value": value,
"description": description,
"category": category,
"type": type,
"is_public": is_public,
"is_hidden": is_hidden,
"metadata": metadata,
}
]
}
return self._update("/settings", body)
def get(self, setting_name, get_hidden=False):
"""
Show details of a setting.
:param setting_name: The key name of the setting to display.
:rtype: :class:`Setting`
:param get_hidden: A decision flag to fetch hidden settings
:rtype: :class:`Setting`
"""
if get_hidden:
resp, body = self.api.client.get(
"/settings/%s?get_hidden=true" % setting_name
)
return body["setting"]
else:
resp, body = self.api.client.get("/settings/%s" % setting_name)
return body["setting"]
def list(self, search_opts=None):
"""
Get a list of all settings.
:rtype: list of :class:`Setting`
"""
if not search_opts:
search_opts = {}
params = {opt: val for opt, val in six.iteritems(search_opts) if val}
query_string = "?%s" % urlencode(params) if params else ""
return self.api.client.post("/workloads/settings%s" % query_string, body=None)
def test_email(self, **kwargs):
"""
Tests whether email settings working
"""
test_email_data = {
"smtp_server_name": kwargs.get("smtp_server_name", ""),
"smtp_server_username": kwargs.get("smtp_server_username", ""),
"smtp_server_password": kwargs.get("smtp_server_password", ""),
"smtp_port": kwargs.get("smtp_port", ""),
"smtp_timeout": kwargs.get("smtp_timeout", 10),
"smtp_default_sender": kwargs.get("smtp_default_sender", ""),
}
params = {opt: val for opt, val in six.iteritems(test_email_data) if val}
query_string = "?%s" % urlencode(params) if params else ""
return self.api.client.get("/workloads/email/test_email%s" % query_string)
def delete(self, setting_name):
"""
Delete a setting.
:param setting_name: he key name of the setting to display.
"""
self._delete("/settings/%s" % base.getid(setting_name))