Skip to content

Commit cb236a4

Browse files
committed
Initial API for setting project settings
1 parent 1857e74 commit cb236a4

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

dataikuapi/dss/project.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,16 @@ def set_metadata(self, metadata):
9797
return self.client._perform_empty(
9898
"PUT", "/projects/%s/metadata" % self.project_key, body = metadata)
9999

100+
def get_settings(self):
101+
"""
102+
Gets the settings of this project. This does not contain permissions. See :meth:`get_permissions`
103+
104+
:returns a handle to read, modify and save the settings
105+
:rtype: :class:`DSSProjectSettings`
106+
"""
107+
ret = self.client._perform_json("GET", "/projects/%s/settings" % self.project_key)
108+
return DSSProjectSettings(self.client, self.project_key, ret)
109+
100110
def get_permissions(self):
101111
"""
102112
Get the permissions attached to this project
@@ -736,6 +746,42 @@ def get_macro(self, runnable_type):
736746
return DSSMacro(self.client, self.project_key, runnable_type)
737747

738748

749+
class DSSProjectSettings(object):
750+
"""Settings of a DSS project"""
751+
752+
def __init__(self, client, project_key, settings):
753+
"""Do not call directly, use :meth:`DSSProject.get_settings`"""
754+
self.client = client
755+
self.project_key = project_key
756+
self.settings = settings
757+
758+
def get_raw(self):
759+
"""Gets all settings as a raw dictionary. This returns a reference to the raw settings, not a copy,
760+
so changes made to the returned object will be reflected when saving.
761+
762+
:rtype: dict
763+
"""
764+
return self.settings
765+
766+
def set_cluster(self, cluster, fallback_cluster=None):
767+
"""Sets the Hadoop/Spark cluster used by this project
768+
769+
:param str cluster: Identifier of the cluster to use. May use variables expansion. If None, sets the project
770+
to use the globally-defined cluster
771+
:param str fallback_cluster: Identifier of the cluster to use if the variable used for "cluster" does not exist
772+
"""
773+
if cluster is None:
774+
self.settings["settings"]["cluster"]["clusterMode"] = "INHERIT"
775+
else:
776+
self.settings["settings"]["cluster"]["clusterMode"] = "EXPLICIT_CLUSTER"
777+
self.settings["settings"]["cluster"]["clusterId"] = cluster
778+
self.settings["settings"]["cluster"]["defaultClusterId"] = fallback_cluster
779+
780+
def save(self):
781+
"""Saves back the settings to the project"""
782+
783+
self.client._perform_empty("PUT", "/projects/%s/settings" % (self.project_key),
784+
body = self.settings)
739785

740786
class JobDefinitionBuilder(object):
741787
def __init__(self, project_key, job_type="NON_RECURSIVE_FORCED_BUILD"):

0 commit comments

Comments
 (0)