import React from 'react'; import { CollapsibleSection, HelpField, timestamp, Tooltip } from '@spinnaker/core'; import type { IAmazonServerGroupDetailsSectionProps } from './IAmazonServerGroupDetailsSectionProps'; import { AWSProviderSettings } from '../../../aws.settings'; import type { IScalingProcess } from '../../../domain'; import { AutoScalingProcessService, ModifyScalingProcessesModal } from '../scalingProcesses'; export interface IScalingProcessesDetailsSectionState { autoScalingProcesses: IScalingProcess[]; scalingPoliciesDisabled: boolean; scheduledActionsDisabled: boolean; } export class ScalingProcessesDetailsSection extends React.Component< IAmazonServerGroupDetailsSectionProps, IScalingProcessesDetailsSectionState > { constructor(props: IAmazonServerGroupDetailsSectionProps) { super(props); this.state = this.getState(props); } private getState(props: IAmazonServerGroupDetailsSectionProps): IScalingProcessesDetailsSectionState { const { serverGroup } = props; const autoScalingProcesses: IScalingProcess[] = AutoScalingProcessService.normalizeScalingProcesses(serverGroup); const scalingPoliciesDisabled = serverGroup.scalingPolicies.length > 0 && autoScalingProcesses .filter((p) => !p.enabled) .some((p) => ['Launch', 'Terminate', 'AlarmNotification'].includes(p.name)); const scheduledActionsDisabled = serverGroup.scheduledActions.length > 0 && autoScalingProcesses .filter((p) => !p.enabled) .some((p) => ['Launch', 'Terminate', 'ScheduledAction'].includes(p.name)); return { autoScalingProcesses, scalingPoliciesDisabled, scheduledActionsDisabled }; } public componentWillReceiveProps(nextProps: IAmazonServerGroupDetailsSectionProps): void { this.setState(this.getState(nextProps)); } private editScalingProcesses = (): void => { const { app: application, serverGroup } = this.props; ModifyScalingProcessesModal.show({ application, serverGroup }); }; public render(): JSX.Element { const { autoScalingProcesses, scalingPoliciesDisabled, scheduledActionsDisabled } = this.state; return ( (

{chevron} {scalingPoliciesDisabled && ( )} {scheduledActionsDisabled && ( )} Scaling Processes

)} > {AWSProviderSettings.adHocInfraWritesEnabled && ( Edit Scaling Processes )}
); } }