feat(deployment): Implement Deployment and DeploymentManager classes with CRUD operations and service integration

This commit is contained in:
2025-09-08 12:46:23 +00:00
parent 4e38d2ff43
commit ce047d1bb0
11 changed files with 462 additions and 41 deletions

View File

@@ -142,13 +142,21 @@ export const getAllDataAction = dataState.createAction(async (statePartArg) => {
'/typedrequest',
'getServices'
);
const responseServices = await trGetServices.fire({
identity: loginStatePart.getState().identity,
});
currentState = {
...currentState,
services: responseServices.services,
};
try {
const responseServices = await trGetServices.fire({
identity: loginStatePart.getState().identity,
});
currentState = {
...currentState,
services: responseServices?.services || [],
};
} catch (error) {
console.error('Failed to fetch services:', error);
currentState = {
...currentState,
services: [],
};
}
// Deployments
const trGetDeployments =
@@ -156,13 +164,21 @@ export const getAllDataAction = dataState.createAction(async (statePartArg) => {
'/typedrequest',
'getDeployments'
);
const responseDeployments = await trGetDeployments.fire({
identity: loginStatePart.getState().identity,
});
currentState = {
...currentState,
deployments: responseDeployments.deployments,
};
try {
const responseDeployments = await trGetDeployments.fire({
identity: loginStatePart.getState().identity,
});
currentState = {
...currentState,
deployments: responseDeployments?.deployments || [],
};
} catch (error) {
console.error('Failed to fetch deployments:', error);
currentState = {
...currentState,
deployments: [],
};
}
return currentState;
});

View File

@@ -15,10 +15,7 @@ import * as appstate from '../appstate.js';
@customElement('cloudly-view-clusters')
export class CloudlyViewClusters extends DeesElement {
@state()
private data: appstate.IDataState = {
secretGroups: [],
secretBundles: [],
};
private data: appstate.IDataState = {};
constructor() {
super();

View File

@@ -15,10 +15,7 @@ import * as appstate from '../appstate.js';
@customElement('cloudly-view-deployments')
export class CloudlyViewDeployments extends DeesElement {
@state()
private data: appstate.IDataState = {
secretGroups: [],
secretBundles: [],
};
private data: appstate.IDataState = {};
constructor() {
super();

View File

@@ -8,10 +8,7 @@ import * as appstate from '../appstate.js';
@customElement('cloudly-view-images')
export class CloudlyViewImages extends DeesElement {
@state()
private data: appstate.IDataState = {
secretGroups: [],
secretBundles: [],
};
private data: appstate.IDataState = {};
constructor() {
super();

View File

@@ -15,10 +15,7 @@ import * as appstate from '../appstate.js';
@customElement('cloudly-view-secretbundles')
export class CloudlyViewSecretBundles extends DeesElement {
@state()
private data: appstate.IDataState = {
secretGroups: [],
secretBundles: [],
};
private data: appstate.IDataState = {};
constructor() {
super();
@@ -44,7 +41,7 @@ export class CloudlyViewSecretBundles extends DeesElement {
<dees-table
.heading1=${'SecretBundles'}
.heading2=${'decoded in client'}
.data=${this.data.secretBundles}
.data=${this.data.secretBundles || []}
.displayFunction=${(itemArg: plugins.interfaces.data.ISecretBundle) => {
return {
name: itemArg.data.name,

View File

@@ -8,18 +8,16 @@ import * as appstate from '../appstate.js';
@customElement('cloudly-view-secretsgroups')
export class CloudlyViewSecretGroups extends DeesElement {
@state()
private data: appstate.IDataState = {
secretGroups: [],
secretBundles: [],
};
private data: appstate.IDataState = {};
constructor() {
super();
appstate.dataState
const subscription = appstate.dataState
.select((stateArg) => stateArg)
.subscribe((dataArg) => {
this.data = dataArg;
});
this.rxSubscriptions.push(subscription);
}
public static styles = [
@@ -36,7 +34,7 @@ export class CloudlyViewSecretGroups extends DeesElement {
<dees-table
heading1="SecretGroups"
heading2="decoded in client"
.data=${this.data.secretGroups}
.data=${this.data.secretGroups || []}
.displayFunction=${(secretGroup: plugins.interfaces.data.ISecretGroup) => {
return {
name: secretGroup.data.name,

View File

@@ -15,10 +15,7 @@ import * as appstate from '../appstate.js';
@customElement('cloudly-view-services')
export class CloudlyViewServices extends DeesElement {
@state()
private data: appstate.IDataState = {
secretGroups: [],
secretBundles: [],
};
private data: appstate.IDataState = {};
constructor() {
super();