Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Disable 'Delete' Actions #7

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 0 additions & 37 deletions packages/amazon/src/loadBalancer/details/LoadBalancerActions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,38 +66,6 @@ export class LoadBalancerActions extends React.Component<ILoadBalancerActionsPro
LoadBalancerModal.show({ app: application, loadBalancer });
};

public deleteLoadBalancer = (): void => {
const { app, loadBalancer, loadBalancerFromParams } = this.props;

if (loadBalancer.instances && loadBalancer.instances.length) {
return;
}

const taskMonitor = {
application: app,
title: 'Deleting ' + loadBalancerFromParams.name,
};

const command: IAmazonLoadBalancerDeleteCommand = {
cloudProvider: loadBalancer.cloudProvider,
loadBalancerName: loadBalancer.name,
loadBalancerType: loadBalancer.loadBalancerType || 'classic',
regions: [loadBalancer.region],
credentials: loadBalancer.account,
vpcId: get(loadBalancer, 'elb.vpcId', null),
};

const submitMethod = () => LoadBalancerWriter.deleteLoadBalancer(command, app);

ConfirmationModalService.confirm({
header: `Really delete ${loadBalancerFromParams.name} in ${loadBalancerFromParams.region}: ${loadBalancerFromParams.accountId}?`,
buttonText: `Delete ${loadBalancerFromParams.name}`,
account: loadBalancerFromParams.accountId,
taskMonitorConfig: taskMonitor,
submitMethod,
});
};

private entityTagUpdate = (): void => {
this.props.app.loadBalancers.refresh();
};
Expand Down Expand Up @@ -136,11 +104,6 @@ export class LoadBalancerActions extends React.Component<ILoadBalancerActionsPro
</a>
</li>
)}
{allowDeletion && (
<ManagedMenuItem resource={loadBalancer} application={app} onClick={this.deleteLoadBalancer}>
Delete Load Balancer
</ManagedMenuItem>
)}
{!allowDeletion && (
<li className="disabled">
<a>
Expand Down
29 changes: 0 additions & 29 deletions packages/appengine/src/loadBalancer/details/details.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,35 +49,6 @@ class AppengineLoadBalancerDetailsController implements IController {
});
}

public deleteLoadBalancer(): void {
const taskMonitor = {
application: this.app,
title: 'Deleting ' + this.loadBalancer.name,
};

const submitMethod = () => {
const loadBalancer: ILoadBalancerDeleteCommand = {
cloudProvider: this.loadBalancer.cloudProvider,
loadBalancerName: this.loadBalancer.name,
credentials: this.loadBalancer.account,
};
return LoadBalancerWriter.deleteLoadBalancer(loadBalancer, this.app);
};

ConfirmationModalService.confirm({
header: 'Really delete ' + this.loadBalancer.name + '?',
buttonText: 'Delete ' + this.loadBalancer.name,
body: this.getConfirmationModalBodyHtml(),
account: this.loadBalancer.account,
taskMonitorConfig: taskMonitor,
submitMethod,
});
}

public canDeleteLoadBalancer(): boolean {
return this.loadBalancer.name !== 'default';
}

private extractLoadBalancer(): void {
this.loadBalancer = this.app.getDataSource('loadBalancers').data.find((test: ILoadBalancer) => {
return test.name === this.loadBalancerFromParams.name && test.account === this.loadBalancerFromParams.accountId;
Expand Down
11 changes: 1 addition & 10 deletions packages/appengine/src/loadBalancer/details/details.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,7 @@ <h3 class="horizontal middle space-between flex-1" select-on-dbl-click>{{ctrl.lo
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu">
<li class="disabled"><a>Edit Load Balancer</a></li>
<li ng-if="ctrl.canDeleteLoadBalancer()">
<a href ng-click="ctrl.deleteLoadBalancer()">Delete Load Balancer</a>
</li>
<li
ng-if="!ctrl.canDeleteLoadBalancer()"
uib-tooltip="You cannot delete a default service."
class="disabled"
>
<a href>Delete Load Balancer</a>
</li>
<li class="disabled"><a>Delete Load Balancer</a></li>
</ul>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,35 +147,5 @@ angular
},
});
};

this.deleteLoadBalancer = function deleteLoadBalancer() {
if ($scope.loadBalancer.instances && $scope.loadBalancer.instances.length) {
return;
}

const taskMonitor = {
application: app,
title: 'Deleting ' + loadBalancer.name,
};

const command = {
cloudProvider: 'azure',
loadBalancerName: $scope.loadBalancer.name,
loadBalancerType: $scope.loadBalancer.loadBalancerType,
credentials: $scope.loadBalancer.account,
region: loadBalancer.region,
appName: app.name,
};

const submitMethod = () => LoadBalancerWriter.deleteLoadBalancer(command, app);

ConfirmationModalService.confirm({
header: 'Really delete ' + loadBalancer.name + '?',
buttonText: 'Delete ' + loadBalancer.name,
account: loadBalancer.accountId,
taskMonitorConfig: taskMonitor,
submitMethod: submitMethod,
});
};
},
]);
11 changes: 1 addition & 10 deletions packages/azure/src/loadBalancer/details/loadBalancerDetail.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,7 @@ <h3 class="horizontal middle space-between flex-1" select-on-dbl-click>{{loadBal
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu">
<li class="disabled"><a>Edit Load Balancer</a></li>
<li ng-if="!loadBalancer.serverGroups.length">
<a href ng-click="ctrl.deleteLoadBalancer()">Delete Load Balancer</a>
</li>
<li
ng-if="loadBalancer.serverGroups.length"
class="disabled"
tooltip="You must detach all server groups before you can delete this load balancer."
>
<a href>Delete Load Balancer</a>
</li>
<li class="disabled"><a>Delete Load Balancer</a></li>
</ul>
</div>
</div>
Expand Down
63 changes: 1 addition & 62 deletions packages/cloudrun/src/loadBalancer/details/details.controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import { module } from 'angular';
import type { IModalService } from 'angular-ui-bootstrap';
import { cloneDeep } from 'lodash';

import type { Application, ILoadBalancer, ILoadBalancerDeleteCommand } from '@spinnaker/core';
import { ConfirmationModalService, LoadBalancerWriter } from '@spinnaker/core';
import type { Application, ILoadBalancer } from '@spinnaker/core';
import type { ICloudrunLoadBalancer } from '../../common/domain/index';

interface ILoadBalancerFromStateParams {
Expand Down Expand Up @@ -63,66 +62,6 @@ class CloudrunLoadBalancerDetailsController implements IController {
}
}

public deleteLoadBalancer(): void {
const taskMonitor = {
application: this.app,
title: 'Deleting ' + this.loadBalancer.name,
};

const submitMethod = () => {
const loadBalancer: ILoadBalancerDeleteCommand = {
cloudProvider: this.loadBalancer.cloudProvider,
loadBalancerName: this.loadBalancer.name,
credentials: this.loadBalancer.account,
};
return LoadBalancerWriter.deleteLoadBalancer(loadBalancer, this.app);
};

ConfirmationModalService.confirm({
header: 'Really delete ' + this.loadBalancer.name + '?',
buttonText: 'Delete ' + this.loadBalancer.name,
body: this.getConfirmationModalBodyHtml(),
account: this.loadBalancer.account,
taskMonitorConfig: taskMonitor,
submitMethod,
});
}

public canDeleteLoadBalancer(): boolean {
return this.loadBalancer.name !== 'default';
}

private getConfirmationModalBodyHtml(): string {
const serverGroupNames = this.loadBalancer.serverGroups.map((serverGroup) => serverGroup.name);
const hasAny = serverGroupNames ? serverGroupNames.length > 0 : false;
const hasMoreThanOne = serverGroupNames ? serverGroupNames.length > 1 : false;

// HTML accepted by the confirmationModalService is static (i.e., not managed by angular).
if (hasAny) {
if (hasMoreThanOne) {
const listOfServerGroupNames = serverGroupNames.map((name) => `<li>${name}</li>`).join('');
return `<div class="alert alert-warning">
<p>
Deleting <b>${this.loadBalancer.name}</b> will destroy the following server groups:
<ul>
${listOfServerGroupNames}
</ul>
</p>
</div>
`;
} else {
return `<div class="alert alert-warning">
<p>
Deleting <b>${this.loadBalancer.name}</b> will destroy <b>${serverGroupNames[0]}</b>.
</p>
</div>
`;
}
} else {
return null;
}
}

private autoClose(): void {
if (this.$scope.$$destroyed) {
return;
Expand Down
11 changes: 1 addition & 10 deletions packages/cloudrun/src/loadBalancer/details/details.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,7 @@ <h3 class="horizontal middle space-between flex-1" select-on-dbl-click>{{ctrl.lo
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu">
<li class="disabled"><a>Edit Load Balancer</a></li>
<li ng-if="ctrl.canDeleteLoadBalancer()">
<a href ng-click="ctrl.deleteLoadBalancer()">Delete Load Balancer</a>
</li>
<li
ng-if="!ctrl.canDeleteLoadBalancer()"
uib-tooltip="You cannot delete a default service."
class="disabled"
>
<a href>Delete Load Balancer</a>
</li>
<li class="disabled"><a>Delete Load Balancer</a></li>
</ul>
</div>
</div>
Expand Down
10 changes: 0 additions & 10 deletions packages/core/src/loadBalancer/loadBalancer.write.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,6 @@ export interface ILoadBalancerDeleteCommand extends IJob {
}

export class LoadBalancerWriter {
public static deleteLoadBalancer(command: ILoadBalancerDeleteCommand, application: Application): PromiseLike<ITask> {
command.type = 'deleteLoadBalancer';

return TaskExecutor.executeTask({
job: [command],
application,
description: `Delete load balancer: ${command.loadBalancerName}`,
});
}

public static upsertLoadBalancer(
command: ILoadBalancerUpsertCommand,
application: Application,
Expand Down
29 changes: 0 additions & 29 deletions packages/dcos/src/loadBalancer/details/details.controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,34 +85,5 @@ angular.module(DCOS_LOADBALANCER_DETAILS_DETAILS_CONTROLLER, []).controller('dco
},
});
};

this.deleteLoadBalancer = function deleteLoadBalancer() {
if ($scope.loadBalancer.instances && $scope.loadBalancer.instances.length) {
return;
}

const taskMonitor = {
application: application,
title: 'Deleting ' + loadBalancer.name,
};

const command = {
cloudProvider: 'dcos',
loadBalancerName: $scope.loadBalancer.name,
dcosCluster: $scope.loadBalancer.dcosCluster,
region: $scope.loadBalancer.region,
credentials: $scope.loadBalancer.account,
};

const submitMethod = () => LoadBalancerWriter.deleteLoadBalancer(command, application);

ConfirmationModalService.confirm({
header: 'Really delete ' + loadBalancer.name + '?',
buttonText: 'Delete ' + loadBalancer.name,
account: loadBalancer.account,
taskMonitorConfig: taskMonitor,
submitMethod: submitMethod,
});
};
},
]);
11 changes: 1 addition & 10 deletions packages/dcos/src/loadBalancer/details/details.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,16 +28,7 @@ <h3 class="horizontal middle space-between flex-1" select-on-dbl-click>{{loadBal
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu">
<li class="disabled"><a>Edit Load Balancer</a></li>
<li ng-if="!loadBalancer.instances.length">
<a href ng-click="ctrl.deleteLoadBalancer()">Delete Load Balancer</a>
</li>
<li
ng-if="loadBalancer.instances.length"
class="disabled"
uib-tooltip="You must detach all instances before you can delete this load balancer."
>
<a href ng-click="ctrl.deleteLoadBalancer()">Delete Load Balancer</a>
</li>
<li class="disabled"><a>Delete Load Balancer</a></li>
</ul>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,28 +29,5 @@ angular
});
}

function deleteLoadBalancers(loadBalancer, application, params = {}) {
const job = {
type: 'deleteLoadBalancer',
loadBalancerName: loadBalancer.listeners[0].name,
regions: [loadBalancer.region || 'global'],
region: loadBalancer.region || 'global',
loadBalancerType: loadBalancer.loadBalancerType,
cloudProvider: loadBalancer.provider,
credentials: loadBalancer.account,
};

angular.extend(job, params);

InfrastructureCaches.clearCache('backendServices');
InfrastructureCaches.clearCache('healthChecks');

return TaskExecutor.executeTask({
job: [job],
application: application,
description: `Delete load balancer: ${loadBalancer.urlMapName} in ${loadBalancer.account}:global`,
});
}

return { upsertLoadBalancers, deleteLoadBalancers };
return upsertLoadBalancers;
});
Original file line number Diff line number Diff line change
Expand Up @@ -234,19 +234,6 @@ angular
});
};

this.deleteLoadBalancer = function deleteLoadBalancer() {
if (!($scope.loadBalancer.instances && $scope.loadBalancer.instances.length)) {
$uibModal.open({
controller: 'gceLoadBalancerDeleteModalCtrl as ctrl',
templateUrl: require('./deleteModal/deleteModal.html'),
resolve: {
application: () => application,
loadBalancer: () => $scope.loadBalancer,
},
});
}
};

this.isHttpLoadBalancer = (lb) => gceHttpLoadBalancerUtils.isHttpLoadBalancer(lb);

this.getNetworkId = function getNetworkId(loadBalancer) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,7 @@ <h3 class="horizontal middle space-between flex-1" select-on-dbl-click>
</button>
<ul class="dropdown-menu" uib-dropdown-menu role="menu">
<li class="disabled"><a>Edit Load Balancer</a></li>
<li ng-if="!loadBalancer.instances.length">
<a href ng-click="ctrl.deleteLoadBalancer()">Delete Load Balancer</a>
</li>
<li
ng-if="loadBalancer.instances.length"
class="disabled"
uib-tooltip="You must detach all instances before you can delete this load balancer."
>
<a href ng-click="ctrl.deleteLoadBalancer()">Delete Load Balancer</a>
</li>
<li class="disabled"><a>Delete Load Balancer</a></li>
<render-if-feature feature="entityTags">
<add-entity-tag-links
component="loadBalancer"
Expand Down
Loading
Loading