import React from 'react'; import { CollapsibleSection, Overridable, Tooltip } from '@spinnaker/core'; import type { IAmazonServerGroupDetailsSectionProps } from './IAmazonServerGroupDetailsSectionProps'; import { AWSProviderSettings } from '../../../aws.settings'; import type { IAmazonServerGroupView, IScalingProcess } from '../../../domain'; import { CreateScalingPolicyButton } from '../scalingPolicy/CreateScalingPolicyButton'; import { ScalingPolicySummary } from '../scalingPolicy/ScalingPolicySummary'; import { AutoScalingProcessService } from '../scalingProcesses/AutoScalingProcessService'; @Overridable('aws.serverGroup.ScalingPoliciesDetailsSection') export class ScalingPoliciesDetailsSection extends React.Component { constructor(props: IAmazonServerGroupDetailsSectionProps) { super(props); } public static arePoliciesDisabled(serverGroup: IAmazonServerGroupView): boolean { const autoScalingProcesses: IScalingProcess[] = AutoScalingProcessService.normalizeScalingProcesses(serverGroup); return ( serverGroup.scalingPolicies.length > 0 && autoScalingProcesses .filter((p) => !p.enabled) .some((p) => ['Launch', 'Terminate', 'AlarmNotification'].includes(p.name)) ); } public render(): JSX.Element { const { app, serverGroup } = this.props; const scalingPoliciesDisabled = ScalingPoliciesDetailsSection.arePoliciesDisabled(serverGroup); return ( (

{chevron} {scalingPoliciesDisabled && ( )} Scaling Policies

)} > {scalingPoliciesDisabled && (
Some scaling processes are disabled that may prevent scaling policies from working.
)} {serverGroup.scalingPolicies.map((policy) => ( ))} {AWSProviderSettings.adHocInfraWritesEnabled ? ( ) : (

Can not create scaling policy, because ad-hoc operations are disabled for AWS providers.

)}
); } }