🌳
pt0/deployF/k8sF/guardOnlyRecreateDeploymentsResourcesActionF.mts
1import * as _ from 'lodash-es'
5import type { KubeResource } from './ctxF/klusterCtxF.mts'
7type GuardResActionProps = { resources: KubeResource[], action: string, cluster_name: string }
9export const guardOnlyRecreateDeploymentsResourcesAction = async ({resources, action, cluster_name}: GuardResActionProps) => {
10 // v v important guard for eth2 validators to ensure never two pods running simult
11 _.each(resources, (resource) => {
12 const {kind} = resource
13 const replicas = _.get(resource, 'spec.replicas')
14 const strategy = _.get(resource, 'spec.strategy.type')
15 if (isKubeDeploy(resource)) {
16 throwIf(() => !(replicas == 1 && strategy == 'Recreate'), {kind, replicas, strategy})
17 }
18 })
19 await resourcesAction({resources, action, cluster_name})