Skip to content

Commit ef4d8b8

Browse files
authored
Merge pull request #156 from dataiku/task/better-code-env-image-rebuild
Task/better code env image rebuild
2 parents 7537818 + 79059fa commit ef4d8b8

File tree

2 files changed

+68
-1
lines changed

2 files changed

+68
-1
lines changed

dataikuapi/dss/admin.py

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,19 @@ def set_definition(self, env):
710710
"""
711711
return self.client._perform_json(
712712
"PUT", "/admin/code-envs/%s/%s" % (self.env_lang, self.env_name), body=env)
713-
713+
714+
def get_version_for_project(self, project_key):
715+
"""
716+
Resolve the code env version for a given project
717+
718+
Note: version will only be non-empty for versioned code envs actually used by the project
719+
720+
:returns: the code env reference, with a version field
721+
"""
722+
return self.client._perform_json(
723+
"GET", "/admin/code-envs/%s/%s/%s/version" % (self.env_lang, self.env_name, project_key))
724+
725+
714726
########################################################
715727
# Code env actions
716728
########################################################
@@ -747,6 +759,52 @@ def update_packages(self, force_rebuild_env=False):
747759
raise Exception('Env update failed : %s' % (json.dumps(resp.get('messages', {}).get('messages', {}))))
748760
return resp
749761

762+
def update_images(self, env_version=None):
763+
"""
764+
Rebuild the docker image of the code env
765+
766+
Note: this call requires an API key with admin rights
767+
"""
768+
resp = self.client._perform_json(
769+
"POST", "/admin/code-envs/%s/%s/images" % (self.env_lang, self.env_name),
770+
params={"envVersion": env_version})
771+
if resp is None:
772+
raise Exception('Env image build returned no data')
773+
if resp.get('messages', {}).get('error', False):
774+
raise Exception('Env image build failed : %s' % (json.dumps(resp.get('messages', {}).get('messages', {}))))
775+
return resp
776+
777+
def list_usages(self, env_version=None):
778+
"""
779+
List usages of the code env in the instance
780+
781+
:return: a list of objects where the code env is used
782+
"""
783+
return self.client._perform_json(
784+
"GET", "/admin/code-envs/%s/%s/usages" % (self.env_lang, self.env_name), params={"envVersion": env_version})
785+
786+
def list_logs(self, env_version=None):
787+
"""
788+
List logs of the code env in the instance
789+
790+
:return: a list of log descriptions
791+
"""
792+
return self.client._perform_json(
793+
"GET", "/admin/code-envs/%s/%s/logs" % (self.env_lang, self.env_name), params={"envVersion": env_version})
794+
795+
def get_log(self, log_name):
796+
"""
797+
Get the logs of the code env
798+
799+
Args:
800+
log_name: name of the log to fetch
801+
802+
Returns:
803+
the log, as a string
804+
"""
805+
return self.client._perform_text(
806+
"GET", "/admin/code-envs/%s/%s/logs/%s" % (self.env_lang, self.env_name, log_name))
807+
750808

751809
class DSSGlobalApiKey(object):
752810
"""

dataikuapi/dssclient.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -528,6 +528,15 @@ def create_code_env(self, env_lang, env_name, deployment_mode, params=None):
528528
raise Exception('Env creation failed : %s' % (json.dumps(resp.get('messages', {}).get('messages', {}))))
529529
return DSSCodeEnv(self, env_lang, env_name)
530530

531+
def list_code_env_usages(self):
532+
"""
533+
List all usages of a code env in the instance
534+
535+
:return: a list of objects where the code env is used
536+
"""
537+
return self._perform_json("GET", "/admin/code-envs/usages")
538+
539+
531540
########################################################
532541
# Clusters
533542
########################################################

0 commit comments

Comments
 (0)