Hkube python wrapper provides a simple interface for integrating algorithm in HKube
For general information on HKube see hkube.io
pip install hkube-python-wrapperDownload hkubectl latest version.
curl -Lo hkubectl https://github.com/kube-HPC/hkubectl/releases/download/$(curl -s https://api.github.com/repos/kube-HPC/hkubectl/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')/hkubectl-linux \
&& chmod +x hkubectl \
&& sudo mv hkubectl /usr/local/bin/For mac replace with hkubectl-macos
For Windows download hkubectl-win.exe
Config hkubectl with your running Kubernetes.
hkubectl config # and follow the promptscreate a file for the algorithm entry-points (alg.py)
from typing import Dict
from hkube_python_wrapper import Algorunner, HKubeApi
def start(args: Dict, hkubeApi: HKubeApi):
return 1build the algorithm with hkubectl
hkubectl algorithm apply algorithm-name --codePath ./folder_of_alg_py --codeEntryPoint alg.py --env python --setCurrentfrom typing import Dict
from hkube_python_wrapper import Algorunner, HKubeApi
def start(args: Dict, hkubeApi: HKubeApi):
return 1
if __name__ == "__main__":
Algorunner.Run(start=start)The start method accepts two arguments:
args: dict of invocation input
| key | type | description |
|---|---|---|
| input | Array | algorithm input as defined in the pipeline descriptor |
| jobId | string | The job ID of the pipeline run |
| taskId | string | The task ID of the algorithm invocation |
| nodeName | string | The name of the node in the pipeline descriptor |
| pipelineName | string | The name of the pipeline |
| batchIndex | int | For batch instance, the index in the batch array |
| parentNodeName | string | For child (code-api) algorithm. The name of the invoking node |
| info.rootJobId | string | for sub-pipeline, the jobId of the invoking pipeline |
hkubeApi: instance of HKubeApi for code-api operations
def start_algorithm( self, algorithmName, input=[], includeResult=True, blocking=False )
Starts an invocation of algorithm with input, and optionally waits for results
algorithmName: string
: The name of the algorithm to start.
input :array
: Optional input for the algorithm.
includeResult :bool
: if True, returns the result of the algorithm execution.
default: True
blocking :bool
: if True, blocks until the algorithm finishes, and returns the results.
If False, returns an awaiter object, that can be awaited (blocking) at a later time
default: False
if blocking==False, returns an awaiter. If true, returns the result of the algorithm
hkubeApi.start_algorithm('some_algorithm',input=[3], blocking=True)def start_stored_subpipeline( self, name, flowInput={}, includeResult=True, blocking=False )
Starts an invocation of a sub-pipeline with input, and optionally waits for results
name : string
: The name of the pipeline to start.
flowInput : dict
: Optional flowInput for the pipeline.
includeResult :bool
: if True, returns the result of the pipeline execution.
default: True
blocking : bool
: if True, blocks until the pipeline finishes, and returns the results.
If False, returns an awaiter object, that can be awaited (blocking) at a later time
default: False
if blocking==False, returns an awaiter. If true, returns the result of the pipeline
hkubeApi.start_stored_subpipeline('simple',flowInput={'foo':3},blocking=True)def start_raw_subpipeline( self, name, nodes, flowInput, options={}, webhooks={}, includeResult=True, blocking=False )
Starts an invocation of a sub-pipeline with input, nodes, options, and optionally waits for results
name : string
: The name of the pipeline to start.
nodes : string
: Array of nodes. See example below.
flowInput : dict
: FlowInput for the pipeline.
options : dict
: pipeline options (like in the pipeline descriptor).
webhooks : dict
: webhook options (like in the pipeline descriptor).
includeResult :bool
: if True, returns the result of the pipeline execution.
default: True
blocking : bool
: if True, blocks until the pipeline finishes, and returns the results.
If False, returns an awaiter object, that can be awaited (blocking) at a later time
default: False
if blocking==False, returns an awaiter. If true, returns the result of the pipeline
nodes=[{'nodeName': 'd1', 'algorithmName': 'green-alg', 'input': ['@flowInput.foo']}]
flowInput={'foo':3}
hkubeApi.start_raw_subpipeline('ddd',nodes, flowInput,webhooks={}, options={}, blocking=True)