Repository URL to install this package:
|
Version:
3.4.39 ▾
|
python3-workloadmgrclient
/
usr
/
lib
/
python3
/
dist-packages
/
workloadmgrclient
/
v1
/
settings.py
|
|---|
# Copyright (c) 2013 TrilioData, Inc.
"""
Settings Interface (1.1 extension).
"""
from workloadmgrclient import base
import six
try:
from urllib import urlencode
except ImportError:
from urllib.parse import urlencode
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):
"""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 metadata: metadata of setting.
:param id: The name of the setting uuid.
:param name: The name of the setting.
:param description: The description of the 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 metadata: metadata of setting.
:param id: The name of the setting uuid.
:param name: The name of the setting.
:param description: The description of the 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._update('/settings', body)
def get(self, setting_name, get_hidden = False):
"""Show details of a setting.
:param setting_id: The key of the setting to display.
:rtype: :class:`Setting`
"""
if get_hidden == True:
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 search_opts is None:
search_opts = {}
qparams = {}
for opt, val in six.iteritems(search_opts):
if val:
qparams[opt] = val
query_string = "?%s" % urlencode(qparams) if qparams else ""
return self.api.client.post("/workloads/settings%s" % query_string, body=None)
def test_email(self):
"""Tests whether email settings working
"""
return self.api.client.get("/workloads/email/test_email")
def delete(self, setting_name):
"""Delete a setting.
:param setting_id: The :class:`Setting` to delete.
"""
self._delete("/settings/%s" % base.getid(setting_name))