diff --git a/project/tasks/danano.go b/project/tasks/danano.go new file mode 100644 index 0000000..8499f08 --- /dev/null +++ b/project/tasks/danano.go @@ -0,0 +1,12 @@ +package main + +import ( + +) + +func exec_task(arg string) string{ + + response := "Ciao danano " + arg + + return response +} \ No newline at end of file diff --git a/project/workflow.yaml b/project/workflow.yaml index 09d6040..b42ebd2 100644 --- a/project/workflow.yaml +++ b/project/workflow.yaml @@ -1,11 +1,21 @@ +project_name: Test tasks: - - name: Data Aggregation # Displayed name - type: processor_nats # Used to select template - code: task1.go # Go code file inside tasks/ dir - target: # Where the component will be deployed + - name: Data Aggregation + type: producer_nats + code: task1.go + targets: - edge - cloud - source_topic: temp_sensor # Source NATS topic - dest_topic: aggregated_data # Destination NATS topic - component_name: data_aggregation # Component name displayed in the OCI artifact + source_topic: temp_sensor + dest_topic: aggregated_data + component_name: data_aggregation + version: 1.0.0 + - name: Daniele pelato + type: processor_nats + code: danano.go + targets: + - edge + source_topic: temp_sensor + dest_topic: sexo + component_name: liscio version: 1.0.0 \ No newline at end of file diff --git a/src/wasm_builder/build.py b/src/wasm_builder/build.py index 2b25bc2..aced835 100644 --- a/src/wasm_builder/build.py +++ b/src/wasm_builder/build.py @@ -10,6 +10,8 @@ def build_project(project_dir, reg_user, reg_pass, detached): logging.error(f"Project directory is not valid") return + print('Building WASM components') + # Docker client client = docker.from_env() @@ -17,6 +19,8 @@ def build_project(project_dir, reg_user, reg_pass, detached): try: client.images.get("wash-build-image:latest") except docker.errors.ImageNotFound: + + print(' - Building wash-build-image from Dockerfile...') client.images.build( path="src/wasm_builder/docker", dockerfile="build.Dockerfile", @@ -24,21 +28,34 @@ def build_project(project_dir, reg_user, reg_pass, detached): ) try: + wait_list = [] + for task in os.listdir(f"{project_dir}/gen"): - __build_wasm(f"{project_dir}/gen/{task}", client, reg_user, reg_pass, detached) + __build_wasm(f"{project_dir}/gen/{task}", client, reg_user, reg_pass, detached, wait_list) + + if detached == 'True': + + print('Waiting for build to finish...') + for container in wait_list: + try: + client.containers.get(container).wait() + except Exception: + continue + except Exception as e: logging.error(f"Error building project: {e}") return print("Project built successfully") -def __build_wasm(task_dir, client, reg_user, reg_pass, detached): +def __build_wasm(task_dir, client, reg_user, reg_pass, detached, wait_list): wadm = __parse_yaml(f"{task_dir}/wadm.yaml") path = os.path.abspath(task_dir) oci_url = wadm['spec']['components'][0]['properties']['image'] + name = wadm['spec']['components'][0]['name'] + '-build' # Build the wasm module print(f" - Building WASM module {oci_url}") @@ -49,11 +66,14 @@ def __build_wasm(task_dir, client, reg_user, reg_pass, detached): f'WASH_REG_PASSWORD={reg_pass}'], volumes={path: {'bind': '/app', 'mode': 'rw'}}, remove=True, - detach=True + detach=True, + name=name ) if detached == 'False': container.wait() + else: + wait_list.append(name) def __parse_yaml(yaml_file):