From feac9e5be8315c2706816ec80407f939a7bd4751 Mon Sep 17 00:00:00 2001 From: saisona Date: Mon, 19 Dec 2022 10:57:58 +0100 Subject: [PATCH 1/3] Update: adding availability to specify CPU and Memory of K8s deployment resources --- action.yaml | 8 ++++++++ bookish.py | 21 ++++++++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/action.yaml b/action.yaml index 39feaba..efe3965 100644 --- a/action.yaml +++ b/action.yaml @@ -10,6 +10,14 @@ outputs: modelInstanceId: description: "ModelInstance id registered by the API" inputs: + resourceMemory: + description: "Specify resources memory of the application to deploy" + required: false + default: "-1" + resourceCPU: + description: "Specify resources CPU of the application to deploy" + required: false + default: "-1" lokiSkip: description: "Skips Loki ArgoWorkflow." required: true diff --git a/bookish.py b/bookish.py index 605a902..70adcbc 100644 --- a/bookish.py +++ b/bookish.py @@ -192,9 +192,10 @@ def waitForHealthy(self): print(f"Waiting for {tts}s") time.sleep(tts) - + if status != "Healthy": - raise RuntimeError(f"Health status error: {status} after all retries") + raise RuntimeError( + f"Health status error: {status} after all retries") def checkApplicationExists(self) -> bool: import requests # pylint: disable=import-error @@ -221,8 +222,7 @@ def generateArgoApplicationSpec(self) -> dict: chart_version = self.env_vars.get("MODEL_HELM_CHART_VERSION") server_dest = "https://34.91.136.161" metadata = {"name": self.application_name, "namespace": "default"} - - helm = {"parameters": [ + parameters = [ {"name": "app.env", "value": self._workerEnv}, {"name": "image.imageName", "value": self.applied_repo}, {"name": "image.version", "value": self.model_version[1:]}, @@ -240,7 +240,17 @@ def generateArgoApplicationSpec(self) -> dict: "NUTSHELL_WORKER_MODEL_PREDICT_TIMEOUT_S")}, {"name": "model.path", "value": self.env_vars.get( "NUTSHELL_MODEL_PATH")} - ]} + ] + + resource_cpu = int(os.environ.get("INPUT_RESOURCEMEMORY", "-1")) + if resource_cpu > -1: + parameters.append({"name": "resources.cpu", "value": resource_cpu}) + resource_memory = int(os.environ.get("INPUT_RESOURCECPU", "-1")) + if resource_memory > -1: + parameters.append( + {"name": "resources.memory", "value": resource_memory}) + + helm = {"parameters": parameters} if not self._hasSHA: helm["parameters"] = helm.get("parameters", []) + [{ @@ -384,5 +394,6 @@ def end(self): print( f"ModelInstanceId({self._model_instance_id}) file is saved at = {url}") + if __name__ == '__main__': ModelDeployment(use_cli=True) From 7488c17b9091f75286a3287560bb98dbc9532659 Mon Sep 17 00:00:00 2001 From: saisona Date: Mon, 19 Dec 2022 16:54:49 +0100 Subject: [PATCH 2/3] Update: adding send mesasge to slack thread --- bookish.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bookish.py b/bookish.py index 70adcbc..7a2ffdb 100644 --- a/bookish.py +++ b/bookish.py @@ -244,9 +244,11 @@ def generateArgoApplicationSpec(self) -> dict: resource_cpu = int(os.environ.get("INPUT_RESOURCEMEMORY", "-1")) if resource_cpu > -1: + self._send_slack_message(f"Modified Kubernetes CPU to {resource_cpu}", self._thread_ts) parameters.append({"name": "resources.cpu", "value": resource_cpu}) resource_memory = int(os.environ.get("INPUT_RESOURCECPU", "-1")) if resource_memory > -1: + self._send_slack_message(f"Modified Kubernetes CPU to {resource_memory}", self._thread_ts) parameters.append( {"name": "resources.memory", "value": resource_memory}) From 36d6b8843cc3a56a1dfe8f28eb1eca0c67b8a00e Mon Sep 17 00:00:00 2001 From: Alexandre Saison Date: Thu, 5 Jan 2023 09:56:54 +0100 Subject: [PATCH 3/3] Update bookish.py Co-authored-by: Guillaume Robin <10772294+cesumilo@users.noreply.github.com> --- bookish.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bookish.py b/bookish.py index 7a2ffdb..c7e4507 100644 --- a/bookish.py +++ b/bookish.py @@ -244,11 +244,11 @@ def generateArgoApplicationSpec(self) -> dict: resource_cpu = int(os.environ.get("INPUT_RESOURCEMEMORY", "-1")) if resource_cpu > -1: - self._send_slack_message(f"Modified Kubernetes CPU to {resource_cpu}", self._thread_ts) + self._send_slack_message(f"Set CPU resource amount to {resource_cpu}", self._thread_ts) parameters.append({"name": "resources.cpu", "value": resource_cpu}) resource_memory = int(os.environ.get("INPUT_RESOURCECPU", "-1")) if resource_memory > -1: - self._send_slack_message(f"Modified Kubernetes CPU to {resource_memory}", self._thread_ts) + self._send_slack_message(f"Set memory resource amount to {resource_memory}", self._thread_ts) parameters.append( {"name": "resources.memory", "value": resource_memory})