@spotinst/spinnaker-deck
Version:
Spinnaker-Deck service, forked with support to Spotinst
57 lines (47 loc) • 1.8 kB
text/typescript
import { Application } from 'core/application/application.model';
import { InfrastructureCaches } from 'core/cache/infrastructureCaches';
import { ISecurityGroup, ITask } from 'core/domain';
import { IJob, TaskExecutor } from 'core/task/taskExecutor';
import { FirewallLabels } from './label';
export interface ISecurityGroupJob extends IJob {
credentials: string;
regions: string[];
securityGroupName: string;
}
export class SecurityGroupWriter {
public static deleteSecurityGroup(
securityGroup: ISecurityGroup,
application: Application,
params: ISecurityGroupJob,
): PromiseLike<ITask> {
params.type = 'deleteSecurityGroup';
params.securityGroupName = securityGroup.name;
params.regions = [securityGroup.region];
params.credentials = securityGroup.accountId;
const operation: PromiseLike<ITask> = TaskExecutor.executeTask({
job: [params],
application,
description: `Delete ${FirewallLabels.get('Firewall')}: ${securityGroup.name}`,
});
InfrastructureCaches.clearCache('securityGroups');
return operation;
}
public static upsertSecurityGroup(
securityGroup: ISecurityGroup,
application: Application,
description: string,
params: any = {},
): PromiseLike<ITask> {
params.type = 'upsertSecurityGroup';
params.securityGroupName = securityGroup.name;
params.credentials = securityGroup.credentials || securityGroup.accountName;
const job: ISecurityGroupJob = { ...securityGroup, ...params };
const operation: PromiseLike<ITask> = TaskExecutor.executeTask({
job: [job],
application,
description: `${description} ${FirewallLabels.get('Firewall')}: ${securityGroup.name}`,
});
InfrastructureCaches.clearCache('securityGroups');
return operation;
}
}