Skip to content

Commit 2b8d202

Browse files
committed
Make DSSClient.get_global_variables return a DSSInstanceVariables handle
[ch64060]
1 parent 1df059a commit 2b8d202

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

dataikuapi/dss/admin.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,3 +946,24 @@ def get_raw(self):
946946
Gets the whole status as a raw dictionary.
947947
"""
948948
return self.status
949+
950+
951+
class DSSInstanceVariables(dict):
952+
"""
953+
Dict containing the instance variables. The variables can be modified directly in the dict and persisted using its `save` method.
954+
955+
Do not create this directly, use :meth:`dataikuapi.dssclient.DSSClient.get_global_variables`
956+
"""
957+
958+
def __init__(self, client, variables):
959+
super().__init__()
960+
self.update(variables)
961+
self.client = client
962+
963+
def save(self):
964+
"""
965+
Save the changes made to the instance variables.
966+
967+
Note: this call requires an API key with admin rights.
968+
"""
969+
return self.client._perform_empty("PUT", "/admin/variables/", body=self)

dataikuapi/dssclient.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from .dss.project import DSSProject
1111
from .dss.app import DSSApp
1212
from .dss.plugin import DSSPlugin
13-
from .dss.admin import DSSUser, DSSOwnUser, DSSGroup, DSSConnection, DSSGeneralSettings, DSSCodeEnv, DSSGlobalApiKey, DSSCluster
13+
from .dss.admin import DSSUser, DSSOwnUser, DSSGroup, DSSConnection, DSSGeneralSettings, DSSCodeEnv, DSSGlobalApiKey, DSSCluster, DSSInstanceVariables
1414
from .dss.meaning import DSSMeaning
1515
from .dss.sqlquery import DSSSQLQuery
1616
from .dss.discussion import DSSObjectDiscussions
@@ -772,10 +772,10 @@ def get_global_variables(self):
772772
773773
This call requires an API key with admin rights
774774
775-
:returns: a Python dictionary of the instance-level variables
775+
:returns: A :class:`dataikuapi.dss.admin.DSSInstanceVariables` handle
776776
"""
777-
return self._perform_json(
778-
"GET", "/admin/variables/")
777+
variables = self._perform_json("GET", "/admin/variables/")
778+
return DSSInstanceVariables(self, variables)
779779

780780
def get_resolved_variables(self, project_key=None, typed=False):
781781
"""
@@ -797,6 +797,8 @@ def get_resolved_variables(self, project_key=None, typed=False):
797797

798798
def set_variables(self, variables):
799799
"""
800+
Deprecated. Use get_global_variables().save()
801+
800802
Updates the DSS instance's variables
801803
802804
This call requires an API key with admin rights
@@ -807,6 +809,7 @@ def set_variables(self, variables):
807809
:param dict variables: the new dictionary of all variables of the instance
808810
809811
"""
812+
warnings.warn("set_variables is deprecated, please use get_global_variables().save()", DeprecationWarning)
810813
return self._perform_empty(
811814
"PUT", "/admin/variables/", body=variables)
812815

0 commit comments

Comments
 (0)