This is an automated email from the ASF dual-hosted git repository.
jiadongb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/texera.git
The following commit(s) were added to refs/heads/main by this push:
new 407a91fa65 refactor(frontend): move shared computing unit types and
services to `frontend/src/app/common` (#4358)
407a91fa65 is described below
commit 407a91fa65586e0df4bcbfe82ea29e10cae9846c
Author: Grace Chia <[email protected]>
AuthorDate: Thu Apr 16 00:53:23 2026 -0700
refactor(frontend): move shared computing unit types and services to
`frontend/src/app/common` (#4358)
<!--
Thanks for sending a pull request (PR)! Here are some tips for you:
1. If this is your first time, please read our contributor guidelines:
[Contributing to
Texera](https://github.com/apache/texera/blob/main/CONTRIBUTING.md)
2. Ensure you have added or run the appropriate tests for your PR
3. If the PR is work in progress, mark it a draft on GitHub.
4. Please write your PR title to summarize what this PR proposes, we
are following Conventional Commits style for PR titles as well.
5. Be sure to keep the PR description updated to reflect all changes.
-->
### What changes were proposed in this PR?
<!--
Please clarify what changes you are proposing. The purpose of this
section
is to outline the changes. Here are some tips for you:
1. If you propose a new API, clarify the use case for a new API.
2. If you fix a bug, you can clarify why it is a bug.
3. If it is a refactoring, clarify what has been changed.
3. It would be helpful to include a before-and-after comparison using
screenshots or GIFs.
4. Please consider writing useful notes for better and faster reviews.
-->
(For readability, `...` refers to `frontend/src/app` in the codebase.)
This PR moves shared computing unit types and services to `.../common`
under `frontend/src/app`. Specifically:
| Original location | New location |
| ---------------- | ------------- |
| `.../dashboard/service/user/computing-unit-actions` |
`.../common/service/computing-unit/computing-unit-actions` |
| `.../workspace/service/workflow-computing-unit` |
`.../common/service/computing-unit/computing-unit-managing` |
| `.../workspace/service/computing-unit-status` |
`.../common/service/computing-unit/computing-unit-status` |
| `.../workspace/types/computing-unit-connection.interface.ts` |
`.../common/type/computing-unit-connection.interface.ts` |
| `.../workspace/types/workflow-computing-unit.ts` |
`.../common/type/workflow-computing-unit.ts` |
### Any related issues, documentation, discussions?
<!--
Please use this section to link other resources if not mentioned
already.
1. If this PR fixes an issue, please include `Fixes #1234`, `Resolves
#1234`
or `Closes #1234`. If it is only related, simply mention the issue
number.
2. If there is design documentation, please add the link.
3. If there is a discussion in the mailing list, please add the link.
-->
Closes #4362
### How was this PR tested?
<!--
If tests were added, say they were added here. Or simply mention that if
the PR
is tested with existing test cases. Make sure to include/update test
cases that
check the changes thoroughly including negative and positive cases if
possible.
If it was tested in a way different from regular unit tests, please
clarify how
you tested step by step, ideally copy and paste-able, so that other
reviewers can
test and check, and descendants can verify in the future. If tests were
not added,
please describe why they were not added and/or why it was difficult to
add.
-->
Locally tested
### Was this PR authored or co-authored using generative AI tooling?
<!--
If generative AI tooling has been used in the process of authoring this
PR,
please include the phrase: 'Generated-by: ' followed by the name of the
tool
and its version. If no, write 'No'.
Please refer to the [ASF Generative Tooling
Guidance](https://www.apache.org/legal/generative-tooling.html) for
details.
-->
No
---------
Co-authored-by: Chen Li <[email protected]>
Co-authored-by: Kunwoo (Chris) <[email protected]>
Co-authored-by: Jiadong Bai <[email protected]>
---
.../computing-unit-actions.service.ts | 17 +++++++----------
.../computing-unit-status.service.ts | 12 ++++++------
.../mock-computing-unit-status.service.ts | 2 +-
.../workflow-computing-unit-managing.service.ts | 4 ++--
.../type}/computing-unit-connection.interface.ts | 0
.../types => common/type}/workflow-computing-unit.ts | 0
frontend/src/app/common/util/computing-unit.util.ts | 2 +-
.../user-computing-unit-list-item.component.ts | 8 ++++----
.../user-computing-unit.component.spec.ts | 6 +++---
.../user-computing-unit.component.ts | 8 ++++----
.../dashboard/service/user/download/download.service.ts | 2 +-
frontend/src/app/dashboard/type/dashboard-entry.ts | 2 +-
frontend/src/app/dashboard/type/type-predicates.ts | 2 +-
.../time-travel/time-travel.component.spec.ts | 4 ++--
.../src/app/workspace/component/menu/menu.component.ts | 6 +++---
.../computing-unit-selection.component.spec.ts | 4 ++--
.../power-button/computing-unit-selection.component.ts | 11 +++++++----
.../operator-property-edit-frame.component.spec.ts | 4 ++--
.../property-editor/property-editor.component.spec.ts | 4 ++--
.../result-exportation/result-exportation.component.ts | 4 ++--
.../console-frame/console-frame.component.spec.ts | 4 ++--
.../error-frame/error-frame.component.spec.ts | 4 ++--
.../result-panel/result-panel.component.spec.ts | 4 ++--
.../workflow-editor/workflow-editor.component.spec.ts | 4 ++--
.../execute-workflow/execute-workflow.service.spec.ts | 4 ++--
.../execute-workflow/execute-workflow.service.ts | 2 +-
.../service/operator-menu/operator-menu.service.spec.ts | 4 ++--
.../workflow-result-export.service.ts | 2 +-
28 files changed, 65 insertions(+), 65 deletions(-)
diff --git
a/frontend/src/app/dashboard/service/user/computing-unit-actions/computing-unit-actions.service.ts
b/frontend/src/app/common/service/computing-unit/computing-unit-actions/computing-unit-actions.service.ts
similarity index 84%
rename from
frontend/src/app/dashboard/service/user/computing-unit-actions/computing-unit-actions.service.ts
rename to
frontend/src/app/common/service/computing-unit/computing-unit-actions/computing-unit-actions.service.ts
index 883c0c03ee..6ac8051dab 100644
---
a/frontend/src/app/dashboard/service/user/computing-unit-actions/computing-unit-actions.service.ts
+++
b/frontend/src/app/common/service/computing-unit/computing-unit-actions/computing-unit-actions.service.ts
@@ -20,16 +20,13 @@
import { Injectable } from "@angular/core";
import { Observable } from "rxjs";
import { NzModalService } from "ng-zorro-antd/modal";
-import { ShareAccessComponent } from
"../../../component/user/share-access/share-access.component";
-import { WorkflowComputingUnitManagingService } from
"../../../../workspace/service/workflow-computing-unit/workflow-computing-unit-managing.service";
-import {
- DashboardWorkflowComputingUnit,
- WorkflowComputingUnitType,
-} from "../../../../workspace/types/workflow-computing-unit";
-import { NotificationService } from
"../../../../common/service/notification/notification.service";
-import { unitTypeMessageTemplate } from
"../../../../common/util/computing-unit.util";
-import { ComputingUnitStatusService } from
"../../../../workspace/service/computing-unit-status/computing-unit-status.service";
-import { extractErrorMessage } from "../../../../common/util/error";
+import { ShareAccessComponent } from
"../../../../dashboard/component/user/share-access/share-access.component";
+import { WorkflowComputingUnitManagingService } from
"../workflow-computing-unit/workflow-computing-unit-managing.service";
+import { DashboardWorkflowComputingUnit, WorkflowComputingUnitType } from
"../../../type/workflow-computing-unit";
+import { NotificationService } from "../../notification/notification.service";
+import { unitTypeMessageTemplate } from "../../../util/computing-unit.util";
+import { ComputingUnitStatusService } from
"../computing-unit-status/computing-unit-status.service";
+import { extractErrorMessage } from "../../../util/error";
export interface StartComputingUnitRequest {
type: WorkflowComputingUnitType;
diff --git
a/frontend/src/app/workspace/service/computing-unit-status/computing-unit-status.service.ts
b/frontend/src/app/common/service/computing-unit/computing-unit-status/computing-unit-status.service.ts
similarity index 94%
rename from
frontend/src/app/workspace/service/computing-unit-status/computing-unit-status.service.ts
rename to
frontend/src/app/common/service/computing-unit/computing-unit-status/computing-unit-status.service.ts
index 06bd0d4071..831263183b 100644
---
a/frontend/src/app/workspace/service/computing-unit-status/computing-unit-status.service.ts
+++
b/frontend/src/app/common/service/computing-unit/computing-unit-status/computing-unit-status.service.ts
@@ -20,14 +20,14 @@
import { Injectable, OnDestroy } from "@angular/core";
import { BehaviorSubject, interval, Observable, of, Subject, Subscription }
from "rxjs";
import { catchError, distinctUntilChanged, filter, map, switchMap, take, tap }
from "rxjs/operators";
-import { DashboardWorkflowComputingUnit } from
"../../types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../../../type/workflow-computing-unit";
import { WorkflowComputingUnitManagingService } from
"../workflow-computing-unit/workflow-computing-unit-managing.service";
-import { WorkflowWebsocketService } from
"../workflow-websocket/workflow-websocket.service";
+import { WorkflowWebsocketService } from
"../../../../workspace/service/workflow-websocket/workflow-websocket.service";
import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
-import { ComputingUnitState } from
"../../types/computing-unit-connection.interface";
-import { isDefined } from "../../../common/util/predicate";
-import { WorkflowStatusService } from
"../workflow-status/workflow-status.service";
-import { UserService } from "../../../common/service/user/user.service";
+import { ComputingUnitState } from
"../../../type/computing-unit-connection.interface";
+import { isDefined } from "../../../util/predicate";
+import { WorkflowStatusService } from
"../../../../workspace/service/workflow-status/workflow-status.service";
+import { UserService } from "../../user/user.service";
/**
* Service that manages and provides access to computing unit status
information
diff --git
a/frontend/src/app/workspace/service/computing-unit-status/mock-computing-unit-status.service.ts
b/frontend/src/app/common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service.ts
similarity index 94%
rename from
frontend/src/app/workspace/service/computing-unit-status/mock-computing-unit-status.service.ts
rename to
frontend/src/app/common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service.ts
index 26be199ebd..d6b47dd308 100644
---
a/frontend/src/app/workspace/service/computing-unit-status/mock-computing-unit-status.service.ts
+++
b/frontend/src/app/common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service.ts
@@ -18,7 +18,7 @@
*/
import { Injectable } from "@angular/core";
-import { DashboardWorkflowComputingUnit } from
"../../types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../../../type/workflow-computing-unit";
import { Observable, of } from "rxjs";
@Injectable()
diff --git
a/frontend/src/app/workspace/service/workflow-computing-unit/workflow-computing-unit-managing.service.ts
b/frontend/src/app/common/service/computing-unit/workflow-computing-unit/workflow-computing-unit-managing.service.ts
similarity index 98%
rename from
frontend/src/app/workspace/service/workflow-computing-unit/workflow-computing-unit-managing.service.ts
rename to
frontend/src/app/common/service/computing-unit/workflow-computing-unit/workflow-computing-unit-managing.service.ts
index a1dbb0c97c..58768bb346 100644
---
a/frontend/src/app/workspace/service/workflow-computing-unit/workflow-computing-unit-managing.service.ts
+++
b/frontend/src/app/common/service/computing-unit/workflow-computing-unit/workflow-computing-unit-managing.service.ts
@@ -20,13 +20,13 @@
import { Injectable } from "@angular/core";
import { HttpClient } from "@angular/common/http";
import { Observable } from "rxjs";
-import { AppSettings } from "../../../common/app-setting";
+import { AppSettings } from "../../../app-setting";
import {
DashboardWorkflowComputingUnit,
WorkflowComputingUnit,
WorkflowComputingUnitResourceLimit,
WorkflowComputingUnitType,
-} from "../../types/workflow-computing-unit";
+} from "../../../type/workflow-computing-unit";
import { map } from "rxjs/operators";
export const COMPUTING_UNIT_BASE_URL = "computing-unit";
diff --git
a/frontend/src/app/workspace/types/computing-unit-connection.interface.ts
b/frontend/src/app/common/type/computing-unit-connection.interface.ts
similarity index 100%
rename from
frontend/src/app/workspace/types/computing-unit-connection.interface.ts
rename to frontend/src/app/common/type/computing-unit-connection.interface.ts
diff --git a/frontend/src/app/workspace/types/workflow-computing-unit.ts
b/frontend/src/app/common/type/workflow-computing-unit.ts
similarity index 100%
rename from frontend/src/app/workspace/types/workflow-computing-unit.ts
rename to frontend/src/app/common/type/workflow-computing-unit.ts
diff --git a/frontend/src/app/common/util/computing-unit.util.ts
b/frontend/src/app/common/util/computing-unit.util.ts
index 3edc0c5638..9f3890594a 100644
--- a/frontend/src/app/common/util/computing-unit.util.ts
+++ b/frontend/src/app/common/util/computing-unit.util.ts
@@ -19,7 +19,7 @@
import { Component, inject } from "@angular/core";
import { NZ_MODAL_DATA } from "ng-zorro-antd/modal";
-import { DashboardWorkflowComputingUnit } from
"../../workspace/types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../type/workflow-computing-unit";
@Component({
template: `
diff --git
a/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit-list-item/user-computing-unit-list-item.component.ts
b/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit-list-item/user-computing-unit-list-item.component.ts
index 46ba5dc085..9b08905cc3 100644
---
a/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit-list-item/user-computing-unit-list-item.component.ts
+++
b/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit-list-item/user-computing-unit-list-item.component.ts
@@ -27,7 +27,7 @@ import {
ViewChild,
ElementRef,
} from "@angular/core";
-import { ComputingUnitStatusService } from
"../../../../../workspace/service/computing-unit-status/computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
import { extractErrorMessage } from "../../../../../common/util/error";
import { NotificationService } from
"../../../../../common/service/notification/notification.service";
import { NzModalService } from "ng-zorro-antd/modal";
@@ -35,8 +35,8 @@ import { UntilDestroy, untilDestroyed } from
"@ngneat/until-destroy";
import {
DashboardWorkflowComputingUnit,
WorkflowComputingUnit,
-} from "../../../../../workspace/types/workflow-computing-unit";
-import { WorkflowComputingUnitManagingService } from
"../../../../../workspace/service/workflow-computing-unit/workflow-computing-unit-managing.service";
+} from "../../../../../common/type/workflow-computing-unit";
+import { WorkflowComputingUnitManagingService } from
"../../../../../common/service/computing-unit/workflow-computing-unit/workflow-computing-unit-managing.service";
import {
ComputingUnitMetadataComponent,
parseResourceUnit,
@@ -53,7 +53,7 @@ import {
getComputingUnitCpuLimitUnit,
} from "../../../../../common/util/computing-unit.util";
import { GuiConfigService } from
"../../../../../common/service/gui-config.service";
-import { ComputingUnitActionsService } from
"../../../../service/user/computing-unit-actions/computing-unit-actions.service";
+import { ComputingUnitActionsService } from
"../../../../../common/service/computing-unit/computing-unit-actions/computing-unit-actions.service";
@UntilDestroy()
@Component({
diff --git
a/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.spec.ts
b/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.spec.ts
index 53b6ecca1c..59eddde6ee 100644
---
a/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.spec.ts
+++
b/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.spec.ts
@@ -25,9 +25,9 @@ import { HttpClient } from "@angular/common/http";
import { UserService } from "../../../../common/service/user/user.service";
import { StubUserService } from
"../../../../common/service/user/stub-user.service";
import { commonTestProviders } from "../../../../common/testing/test-utils";
-import { WorkflowComputingUnitManagingService } from
"../../../../workspace/service/workflow-computing-unit/workflow-computing-unit-managing.service";
-import { ComputingUnitStatusService } from
"../../../../workspace/service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../../../workspace/service/computing-unit-status/mock-computing-unit-status.service";
+import { WorkflowComputingUnitManagingService } from
"../../../../common/service/computing-unit/workflow-computing-unit/workflow-computing-unit-managing.service";
+import { ComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
describe("UserComputingUnitComponent", () => {
let component: UserComputingUnitComponent;
diff --git
a/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.ts
b/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.ts
index d96f33ca41..5e962b5712 100644
---
a/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.ts
+++
b/frontend/src/app/dashboard/component/user/user-computing-unit/user-computing-unit.component.ts
@@ -18,18 +18,18 @@
*/
import { Component, Input, OnInit } from "@angular/core";
-import { ComputingUnitStatusService } from
"../../../../workspace/service/computing-unit-status/computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
import { DashboardEntry } from "../../../type/dashboard-entry";
import {
DashboardWorkflowComputingUnit,
WorkflowComputingUnitType,
-} from "../../../../workspace/types/workflow-computing-unit";
+} from "../../../../common/type/workflow-computing-unit";
import { extractErrorMessage } from "../../../../common/util/error";
import { NotificationService } from
"../../../../common/service/notification/notification.service";
import { NzModalService } from "ng-zorro-antd/modal";
import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
import { UserService } from "../../../../common/service/user/user.service";
-import { WorkflowComputingUnitManagingService } from
"../../../../workspace/service/workflow-computing-unit/workflow-computing-unit-managing.service";
+import { WorkflowComputingUnitManagingService } from
"../../../../common/service/computing-unit/workflow-computing-unit/workflow-computing-unit-managing.service";
import {
parseResourceUnit,
parseResourceNumber,
@@ -38,7 +38,7 @@ import {
isComputingUnitShmTooLarge,
getJvmMemorySliderConfig,
} from "../../../../common/util/computing-unit.util";
-import { ComputingUnitActionsService } from
"../../../service/user/computing-unit-actions/computing-unit-actions.service";
+import { ComputingUnitActionsService } from
"../../../../common/service/computing-unit/computing-unit-actions/computing-unit-actions.service";
@UntilDestroy()
@Component({
diff --git
a/frontend/src/app/dashboard/service/user/download/download.service.ts
b/frontend/src/app/dashboard/service/user/download/download.service.ts
index 53333e744d..0e202e0c26 100644
--- a/frontend/src/app/dashboard/service/user/download/download.service.ts
+++ b/frontend/src/app/dashboard/service/user/download/download.service.ts
@@ -28,7 +28,7 @@ import * as JSZip from "jszip";
import { Workflow } from "../../../../common/type/workflow";
import { HttpClient, HttpResponse } from "@angular/common/http";
import { WORKFLOW_EXECUTIONS_API_BASE_URL } from
"../workflow-executions/workflow-executions.service";
-import { DashboardWorkflowComputingUnit } from
"../../../../workspace/types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../../../../common/type/workflow-computing-unit";
import { TOKEN_KEY } from "../../../../common/service/user/auth.service";
var contentDisposition = require("content-disposition");
diff --git a/frontend/src/app/dashboard/type/dashboard-entry.ts
b/frontend/src/app/dashboard/type/dashboard-entry.ts
index 735249d64c..b2949b080d 100644
--- a/frontend/src/app/dashboard/type/dashboard-entry.ts
+++ b/frontend/src/app/dashboard/type/dashboard-entry.ts
@@ -21,7 +21,7 @@ import { DashboardFile } from "./dashboard-file.interface";
import { DashboardWorkflow } from "./dashboard-workflow.interface";
import { DashboardProject } from "./dashboard-project.interface";
import { DashboardDataset } from "./dashboard-dataset.interface";
-import { DashboardWorkflowComputingUnit } from
"../../workspace/types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../../common/type/workflow-computing-unit";
import {
isDashboardDataset,
isDashboardFile,
diff --git a/frontend/src/app/dashboard/type/type-predicates.ts
b/frontend/src/app/dashboard/type/type-predicates.ts
index 0ed825feb4..ae4217d79e 100644
--- a/frontend/src/app/dashboard/type/type-predicates.ts
+++ b/frontend/src/app/dashboard/type/type-predicates.ts
@@ -21,7 +21,7 @@ import { DashboardWorkflow } from
"./dashboard-workflow.interface";
import { DashboardProject } from "./dashboard-project.interface";
import { DashboardFile } from "./dashboard-file.interface";
import { DashboardDataset } from "./dashboard-dataset.interface";
-import { DashboardWorkflowComputingUnit } from
"../../workspace/types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../../common/type/workflow-computing-unit";
export function isDashboardWorkflow(value: any): value is DashboardWorkflow {
return value && typeof value.workflow === "object";
diff --git
a/frontend/src/app/workspace/component/left-panel/time-travel/time-travel.component.spec.ts
b/frontend/src/app/workspace/component/left-panel/time-travel/time-travel.component.spec.ts
index 1dd517ddf4..f9b7eb0ba7 100644
---
a/frontend/src/app/workspace/component/left-panel/time-travel/time-travel.component.spec.ts
+++
b/frontend/src/app/workspace/component/left-panel/time-travel/time-travel.component.spec.ts
@@ -25,8 +25,8 @@ import { FormlyModule } from "@ngx-formly/core";
import { TEXERA_FORMLY_CONFIG } from "../../../../common/formly/formly-config";
import { HttpClientTestingModule } from "@angular/common/http/testing";
import { TimeTravelComponent } from "./time-travel.component";
-import { ComputingUnitStatusService } from
"../../../service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../../service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../../common/testing/test-utils";
describe("VersionsListDisplayComponent", () => {
diff --git a/frontend/src/app/workspace/component/menu/menu.component.ts
b/frontend/src/app/workspace/component/menu/menu.component.ts
index 2a13a28613..492b315cfb 100644
--- a/frontend/src/app/workspace/component/menu/menu.component.ts
+++ b/frontend/src/app/workspace/component/menu/menu.component.ts
@@ -51,11 +51,11 @@ import { ReportGenerationService } from
"../../service/report-generation/report-
import { ShareAccessComponent } from
"src/app/dashboard/component/user/share-access/share-access.component";
import { PanelService } from "../../service/panel/panel.service";
import { DASHBOARD_USER_WORKFLOW } from "../../../app-routing.constant";
-import { ComputingUnitStatusService } from
"../../service/computing-unit-status/computing-unit-status.service";
-import { ComputingUnitState } from
"../../types/computing-unit-connection.interface";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { ComputingUnitState } from
"../../../common/type/computing-unit-connection.interface";
import { ComputingUnitSelectionComponent } from
"../power-button/computing-unit-selection.component";
import { GuiConfigService } from "../../../common/service/gui-config.service";
-import { DashboardWorkflowComputingUnit } from
"../../types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../../../common/type/workflow-computing-unit";
import { Privilege } from "../../../dashboard/type/share-access.interface";
import { MarkdownDescriptionComponent } from
"../../../dashboard/component/user/markdown-description/markdown-description.component";
diff --git
a/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts
b/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts
index 47567edb28..0b22b72065 100644
---
a/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts
+++
b/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.spec.ts
@@ -26,8 +26,8 @@ import { NzIconModule } from "ng-zorro-antd/icon";
import { ActivatedRoute, ActivatedRouteSnapshot, convertToParamMap, Data,
Params, UrlSegment } from "@angular/router";
import { NzDropDownModule } from "ng-zorro-antd/dropdown";
import { NzModalModule, NzModalService } from "ng-zorro-antd/modal";
-import { ComputingUnitStatusService } from
"../../service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../common/testing/test-utils";
describe("PowerButtonComponent", () => {
diff --git
a/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts
b/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts
index c868cac284..38ac0ee008 100644
---
a/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts
+++
b/frontend/src/app/workspace/component/power-button/computing-unit-selection.component.ts
@@ -19,21 +19,24 @@
import { ChangeDetectorRef, Component, OnInit } from "@angular/core";
import { take } from "rxjs/operators";
-import { WorkflowComputingUnitManagingService } from
"../../service/workflow-computing-unit/workflow-computing-unit-managing.service";
-import { DashboardWorkflowComputingUnit, WorkflowComputingUnitType } from
"../../types/workflow-computing-unit";
+import { WorkflowComputingUnitManagingService } from
"../../../common/service/computing-unit/workflow-computing-unit/workflow-computing-unit-managing.service";
+import {
+ DashboardWorkflowComputingUnit,
+ WorkflowComputingUnitType,
+} from "../../../common/type/workflow-computing-unit";
import { NotificationService } from
"../../../common/service/notification/notification.service";
import { DEFAULT_WORKFLOW, WorkflowActionService } from
"../../service/workflow-graph/model/workflow-action.service";
import { isDefined } from "../../../common/util/predicate";
import { UntilDestroy, untilDestroyed } from "@ngneat/until-destroy";
import { extractErrorMessage } from "../../../common/util/error";
-import { ComputingUnitStatusService } from
"../../service/computing-unit-status/computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
import { NzModalService } from "ng-zorro-antd/modal";
import { WorkflowExecutionsService } from
"../../../dashboard/service/user/workflow-executions/workflow-executions.service";
import { WorkflowExecutionsEntry } from
"../../../dashboard/type/workflow-executions-entry";
import { ExecutionState } from "../../types/execute-workflow.interface";
import { ShareAccessComponent } from
"../../../dashboard/component/user/share-access/share-access.component";
import { GuiConfigService } from "../../../common/service/gui-config.service";
-import { ComputingUnitActionsService } from
"../../../dashboard/service/user/computing-unit-actions/computing-unit-actions.service";
+import { ComputingUnitActionsService } from
"../../../common/service/computing-unit/computing-unit-actions/computing-unit-actions.service";
import {
ComputingUnitMetadataComponent,
parseResourceUnit,
diff --git
a/frontend/src/app/workspace/component/property-editor/operator-property-edit-frame/operator-property-edit-frame.component.spec.ts
b/frontend/src/app/workspace/component/property-editor/operator-property-edit-frame/operator-property-edit-frame.component.spec.ts
index 01ffc78e2d..16d6a1c3f1 100644
---
a/frontend/src/app/workspace/component/property-editor/operator-property-edit-frame/operator-property-edit-frame.component.spec.ts
+++
b/frontend/src/app/workspace/component/property-editor/operator-property-edit-frame/operator-property-edit-frame.component.spec.ts
@@ -47,8 +47,8 @@ import { cloneDeep } from "lodash-es";
import Ajv from "ajv";
import { COLLAB_DEBOUNCE_TIME_MS } from
"../../../../common/formly/collab-wrapper/collab-wrapper/collab-wrapper.component";
import { FormlyNgZorroAntdModule } from "@ngx-formly/ng-zorro-antd";
-import { ComputingUnitStatusService } from
"../../../service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../../service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../../common/testing/test-utils";
const { marbles } = configure({ run: false });
diff --git
a/frontend/src/app/workspace/component/property-editor/property-editor.component.spec.ts
b/frontend/src/app/workspace/component/property-editor/property-editor.component.spec.ts
index f2a9a414aa..04032f619b 100644
---
a/frontend/src/app/workspace/component/property-editor/property-editor.component.spec.ts
+++
b/frontend/src/app/workspace/component/property-editor/property-editor.component.spec.ts
@@ -29,8 +29,8 @@ import { OperatorPropertyEditFrameComponent } from
"./operator-property-edit-fra
import { HttpClientTestingModule } from "@angular/common/http/testing";
import { OperatorMetadataService } from
"../../service/operator-metadata/operator-metadata.service";
import { StubOperatorMetadataService } from
"../../service/operator-metadata/stub-operator-metadata.service";
-import { ComputingUnitStatusService } from
"../../service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../common/testing/test-utils";
describe("PropertyEditorComponent", () => {
diff --git
a/frontend/src/app/workspace/component/result-exportation/result-exportation.component.ts
b/frontend/src/app/workspace/component/result-exportation/result-exportation.component.ts
index 2f75c8788f..36ce3b1042 100644
---
a/frontend/src/app/workspace/component/result-exportation/result-exportation.component.ts
+++
b/frontend/src/app/workspace/component/result-exportation/result-exportation.component.ts
@@ -28,8 +28,8 @@ import { DatasetService } from
"../../../dashboard/service/user/dataset/dataset.
import { NZ_MODAL_DATA, NzModalRef, NzModalService } from
"ng-zorro-antd/modal";
import { WorkflowActionService } from
"../../service/workflow-graph/model/workflow-action.service";
import { WorkflowResultService } from
"../../service/workflow-result/workflow-result.service";
-import { ComputingUnitStatusService } from
"../../service/computing-unit-status/computing-unit-status.service";
-import { DashboardWorkflowComputingUnit } from
"../../types/workflow-computing-unit";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { DashboardWorkflowComputingUnit } from
"../../../common/type/workflow-computing-unit";
import { UserDatasetVersionCreatorComponent } from
"../../../dashboard/component/user/user-dataset/user-dataset-explorer/user-dataset-version-creator/user-dataset-version-creator.component";
@UntilDestroy()
diff --git
a/frontend/src/app/workspace/component/result-panel/console-frame/console-frame.component.spec.ts
b/frontend/src/app/workspace/component/result-panel/console-frame/console-frame.component.spec.ts
index e16a737d9f..72363eeaaa 100644
---
a/frontend/src/app/workspace/component/result-panel/console-frame/console-frame.component.spec.ts
+++
b/frontend/src/app/workspace/component/result-panel/console-frame/console-frame.component.spec.ts
@@ -24,8 +24,8 @@ import { OperatorMetadataService } from
"../../../service/operator-metadata/oper
import { StubOperatorMetadataService } from
"../../../service/operator-metadata/stub-operator-metadata.service";
import { HttpClientTestingModule } from "@angular/common/http/testing";
import { NzDropDownModule } from "ng-zorro-antd/dropdown";
-import { ComputingUnitStatusService } from
"../../../service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../../service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../../common/testing/test-utils";
describe("ConsoleFrameComponent", () => {
diff --git
a/frontend/src/app/workspace/component/result-panel/error-frame/error-frame.component.spec.ts
b/frontend/src/app/workspace/component/result-panel/error-frame/error-frame.component.spec.ts
index 3499d0c22c..b85ff8722b 100644
---
a/frontend/src/app/workspace/component/result-panel/error-frame/error-frame.component.spec.ts
+++
b/frontend/src/app/workspace/component/result-panel/error-frame/error-frame.component.spec.ts
@@ -24,8 +24,8 @@ import { OperatorMetadataService } from
"../../../service/operator-metadata/oper
import { StubOperatorMetadataService } from
"../../../service/operator-metadata/stub-operator-metadata.service";
import { HttpClientTestingModule } from "@angular/common/http/testing";
import { NzDropDownModule } from "ng-zorro-antd/dropdown";
-import { ComputingUnitStatusService } from
"src/app/workspace/service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"src/app/workspace/service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../../common/testing/test-utils";
describe("ConsoleFrameComponent", () => {
diff --git
a/frontend/src/app/workspace/component/result-panel/result-panel.component.spec.ts
b/frontend/src/app/workspace/component/result-panel/result-panel.component.spec.ts
index e2ffd9dffe..18487a265b 100644
---
a/frontend/src/app/workspace/component/result-panel/result-panel.component.spec.ts
+++
b/frontend/src/app/workspace/component/result-panel/result-panel.component.spec.ts
@@ -29,8 +29,8 @@ import { HttpClientTestingModule } from
"@angular/common/http/testing";
import { NzModalModule } from "ng-zorro-antd/modal";
import { ExecutionState } from "../../types/execute-workflow.interface";
import { mockPoint, mockResultPredicate } from
"../../service/workflow-graph/model/mock-workflow-data";
-import { ComputingUnitStatusService } from
"../../service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../common/testing/test-utils";
describe("ResultPanelComponent", () => {
diff --git
a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts
b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts
index 8048d3a487..e012dfa97d 100644
---
a/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts
+++
b/frontend/src/app/workspace/component/workflow-editor/workflow-editor.component.spec.ts
@@ -56,8 +56,8 @@ import { RouterTestingModule } from "@angular/router/testing";
import { createYTypeFromObject } from "../../types/shared-editing.interface";
import * as jQuery from "jquery";
import { ContextMenuComponent } from
"./context-menu/context-menu/context-menu.component";
-import { ComputingUnitStatusService } from
"../../service/computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../../service/computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../common/testing/test-utils";
describe("WorkflowEditorComponent", () => {
diff --git
a/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.spec.ts
b/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.spec.ts
index 469d19c610..90848cc17b 100644
---
a/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.spec.ts
+++
b/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.spec.ts
@@ -35,12 +35,12 @@ import { WorkflowUtilService } from
"../workflow-graph/util/workflow-util.servic
import { WorkflowSnapshotService } from
"../../../dashboard/service/user/workflow-snapshot/workflow-snapshot.service";
import { DOCUMENT } from "@angular/common";
import { WorkflowSettings } from "src/app/common/type/workflow";
-import { ComputingUnitStatusService } from
"../computing-unit-status/computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
import { AuthService } from "src/app/common/service/user/auth.service";
import { StubAuthService } from
"src/app/common/service/user/stub-auth.service";
import { UserService } from "src/app/common/service/user/user.service";
import { StubUserService } from
"src/app/common/service/user/stub-user.service";
-import { MockComputingUnitStatusService } from
"../computing-unit-status/mock-computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../common/testing/test-utils";
class StubHttpClient {
diff --git
a/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.ts
b/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.ts
index cbddc01a66..4c2eb0ebbc 100644
---
a/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.ts
+++
b/frontend/src/app/workspace/service/execute-workflow/execute-workflow.service.ts
@@ -47,7 +47,7 @@ import { WorkflowStatusService } from
"../workflow-status/workflow-status.servic
import { intersection } from "../../../common/util/set";
import { WorkflowSettings } from "../../../common/type/workflow";
import { DOCUMENT } from "@angular/common";
-import { ComputingUnitStatusService } from
"../computing-unit-status/computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
// TODO: change this declaration
export const FORM_DEBOUNCE_TIME_MS = 150;
diff --git
a/frontend/src/app/workspace/service/operator-menu/operator-menu.service.spec.ts
b/frontend/src/app/workspace/service/operator-menu/operator-menu.service.spec.ts
index c791c6fb71..8b4f3c9b5a 100644
---
a/frontend/src/app/workspace/service/operator-menu/operator-menu.service.spec.ts
+++
b/frontend/src/app/workspace/service/operator-menu/operator-menu.service.spec.ts
@@ -23,8 +23,8 @@ import { StubOperatorMetadataService } from
"../operator-metadata/stub-operator-
import { OperatorMenuService } from "./operator-menu.service";
import { HttpClientModule } from "@angular/common/http";
-import { ComputingUnitStatusService } from
"../computing-unit-status/computing-unit-status.service";
-import { MockComputingUnitStatusService } from
"../computing-unit-status/mock-computing-unit-status.service";
+import { ComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/computing-unit-status.service";
+import { MockComputingUnitStatusService } from
"../../../common/service/computing-unit/computing-unit-status/mock-computing-unit-status.service";
import { commonTestProviders } from "../../../common/testing/test-utils";
describe("OperatorMenuService", () => {
diff --git
a/frontend/src/app/workspace/service/workflow-result-export/workflow-result-export.service.ts
b/frontend/src/app/workspace/service/workflow-result-export/workflow-result-export.service.ts
index 3fde39774f..ce3a6db6d9 100644
---
a/frontend/src/app/workspace/service/workflow-result-export/workflow-result-export.service.ts
+++
b/frontend/src/app/workspace/service/workflow-result-export/workflow-result-export.service.ts
@@ -28,7 +28,7 @@ import { catchError, filter, map, take } from
"rxjs/operators";
import { WorkflowResultService } from
"../workflow-result/workflow-result.service";
import { DownloadService, ExportWorkflowJsonResponse } from
"../../../dashboard/service/user/download/download.service";
import { HttpResponse } from "@angular/common/http";
-import { DashboardWorkflowComputingUnit } from
"../../types/workflow-computing-unit";
+import { DashboardWorkflowComputingUnit } from
"../../../common/type/workflow-computing-unit";
import { GuiConfigService } from "../../../common/service/gui-config.service";
/**