17
17
import { MutableRefObject } from 'react'
18
18
import moment from 'moment'
19
19
import {
20
+ getIsApprovalPolicyConfigured ,
20
21
sanitizeApprovalConfigData ,
21
22
sanitizeTargetPlatforms ,
22
23
sanitizeUserApprovalList ,
@@ -49,6 +50,7 @@ import {
49
50
EnvAppsMetaDTO ,
50
51
GetAppsInfoForEnvProps ,
51
52
AppMeta ,
53
+ ApprovalRuntimeStateType ,
52
54
} from './Types'
53
55
import { ApiResourceType , STAGE_MAP } from '../Pages'
54
56
import { RefVariableType , VariableTypeFormat } from './CIPipeline.Types'
@@ -116,6 +118,8 @@ const cdMaterialListModal = ({
116
118
artifactId,
117
119
artifactStatus,
118
120
disableDefaultSelection,
121
+ isExceptionUser,
122
+ isApprovalConfigured,
119
123
} : CDMaterialListModalServiceUtilProps ) => {
120
124
if ( ! artifacts || ! artifacts . length ) return [ ]
121
125
@@ -131,8 +135,15 @@ const cdMaterialListModal = ({
131
135
artifactStatusValue = artifactStatus
132
136
}
133
137
138
+ const isConsumedNonApprovedImage =
139
+ ! isExceptionUser && isApprovalConfigured &&
140
+ ( ! material . userApprovalMetadata ||
141
+ material . userApprovalMetadata . approvalRuntimeState !== ApprovalRuntimeStateType . approved )
142
+
134
143
const selectImage =
135
- ! isImageMarked && markFirstSelected && filterState === FilterStates . ALLOWED ? ! material . vulnerable : false
144
+ ! isImageMarked && markFirstSelected && filterState === FilterStates . ALLOWED && ! isConsumedNonApprovedImage
145
+ ? ! material . vulnerable
146
+ : false
136
147
if ( selectImage ) {
137
148
isImageMarked = true
138
149
}
@@ -328,17 +339,27 @@ export const processCDMaterialServiceResponse = (
328
339
}
329
340
}
330
341
342
+ const approvalInfo = processCDMaterialsApprovalInfo (
343
+ stage === DeploymentNodeType . CD || stage === DeploymentNodeType . APPROVAL ,
344
+ cdMaterialsResult ,
345
+ )
346
+
347
+ const isApprovalConfigured = getIsApprovalPolicyConfigured (
348
+ approvalInfo ?. deploymentApprovalInfo ?. approvalConfigData ,
349
+ )
350
+
351
+ const isExceptionUser = approvalInfo ?. deploymentApprovalInfo ?. approvalConfigData ?. isExceptionUser ?? false
352
+
331
353
const materials = cdMaterialListModal ( {
332
354
artifacts : cdMaterialsResult . ci_artifacts ,
333
355
offset : offset ?? 0 ,
334
356
artifactId : cdMaterialsResult . latest_wf_artifact_id ,
335
357
artifactStatus : cdMaterialsResult . latest_wf_artifact_status ,
336
358
disableDefaultSelection,
359
+ isApprovalConfigured,
360
+ isExceptionUser,
337
361
} )
338
- const approvalInfo = processCDMaterialsApprovalInfo (
339
- stage === DeploymentNodeType . CD || stage === DeploymentNodeType . APPROVAL ,
340
- cdMaterialsResult ,
341
- )
362
+
342
363
const metaInfo = processCDMaterialsMetaInfo ( cdMaterialsResult )
343
364
const imagePromotionInfo = processImagePromotionInfo ( cdMaterialsResult )
344
365
@@ -439,10 +460,12 @@ export function fetchChartTemplateVersions() {
439
460
440
461
export const getDefaultConfig = ( ) : Promise < ResponseType > => get ( `${ ROUTES . NOTIFIER } /channel/config` )
441
462
442
- export function getEnvironmentListMinPublic ( includeAllowedDeploymentTypes ?: boolean ) {
443
- return get (
444
- `${ ROUTES . ENVIRONMENT_LIST_MIN } ?auth=false${ includeAllowedDeploymentTypes ? '&showDeploymentOptions=true' : '' } ` ,
445
- )
463
+ export function getEnvironmentListMinPublic ( includeAllowedDeploymentTypes ?: boolean , options ?: APIOptions ) {
464
+ const url = getUrlWithSearchParams ( ROUTES . ENVIRONMENT_LIST_MIN , {
465
+ auth : false ,
466
+ ...( includeAllowedDeploymentTypes ? { showDeploymentOptions : true } : { } ) ,
467
+ } )
468
+ return get ( url , options )
446
469
}
447
470
448
471
export function getClusterListMin ( ) {
@@ -453,7 +476,10 @@ export function getClusterListMin() {
453
476
export const getResourceGroupListRaw = ( clusterId : string ) : Promise < ResponseType < ApiResourceType > > =>
454
477
get ( `${ ROUTES . API_RESOURCE } /${ ROUTES . GVK } /${ clusterId } ` )
455
478
456
- export function getNamespaceListMin ( clusterIdsCsv : string , abortControllerRef ?: APIOptions [ 'abortControllerRef' ] ) : Promise < EnvironmentListHelmResponse > {
479
+ export function getNamespaceListMin (
480
+ clusterIdsCsv : string ,
481
+ abortControllerRef ?: APIOptions [ 'abortControllerRef' ] ,
482
+ ) : Promise < EnvironmentListHelmResponse > {
457
483
const URL = `${ ROUTES . NAMESPACE } /autocomplete?ids=${ clusterIdsCsv } `
458
484
return get ( URL , { abortControllerRef } )
459
485
}
0 commit comments