import React from 'react'; import { Dropdown, MenuItem } from 'react-bootstrap'; import type { Application, IManifest } from '@spinnaker/core'; import { AddEntityTagLinks, ClusterTargetBuilder, IfFeatureEnabled, robotToHuman, SETTINGS } from '@spinnaker/core'; import type { IKubernetesServerGroupManager } from '../../interfaces'; import { KubernetesManifestCommandBuilder } from '../../manifest'; import { Delete } from '../../manifest/delete/Delete'; import { PauseRollout } from '../../manifest/rollout/PauseRollout'; import { ResumeRollout } from '../../manifest/rollout/ResumeRollout'; import { RollingRestart } from '../../manifest/rollout/RollingRestart'; import { UndoRollout } from '../../manifest/rollout/UndoRollout'; import { Scale } from '../../manifest/scale/Scale'; import { ManifestWizard } from '../../manifest/wizard/ManifestWizard'; import { useManifest } from '../../serverGroup/details/useManifest'; export interface IServerGroupManagerActionsProps { application: Application; serverGroupManager: IKubernetesServerGroupManager; manifest: IManifest; } export function ServerGroupManagerActions({ application, serverGroupManager, manifest, }: IServerGroupManagerActionsProps) { const isEnabled = SETTINGS.kubernetesAdHocInfraWritesEnabled; const entityTagTargets = ClusterTargetBuilder.buildManagerClusterTargets(serverGroupManager); const { manifestController } = useManifest({ manifest }); const canUndoRolloutServerGroupManager = (): boolean => { return serverGroupManager && serverGroupManager.serverGroups && serverGroupManager.serverGroups.length > 0; }; const editServerGroupManager = (): void => { KubernetesManifestCommandBuilder.buildNewManifestCommand( application, manifest.manifest, serverGroupManager.moniker, serverGroupManager.account, ).then((builtCommand) => { ManifestWizard.show({ title: 'Edit Manifest', application: application, command: builtCommand }); }); }; return ( <> {isEnabled && ( {robotToHuman(serverGroupManager.kind)} Actions )} {canUndoRolloutServerGroupManager() && ( )} {manifest.status.paused.state && } {!manifest.status.paused.state && !manifest.status.stable.state && ( )} {!manifest.status.paused.state && ( )} Edit application.serverGroupManagers.refresh()} /> } /> ); }