Skip to content

Commit 1d21217

Browse files
Merge branch 'main' into pre-post-search-bar
2 parents a297fe1 + 5835f4a commit 1d21217

File tree

4 files changed

+92
-71
lines changed

4 files changed

+92
-71
lines changed

src/components/app/details/appDetails/DeployedCommitCard.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import React, { useEffect, useState } from 'react'
22
import Tippy from '@tippyjs/react'
33
import { ReactComponent as Question } from '../../../../assets/icons/ic-help-outline.svg'
4-
import { ReactComponent as GitHub } from '../../../../assets/icons/git/github.svg'
4+
// import { ReactComponent as GitHub } from '../../../../assets/icons/git/github.svg'
55
import { ReactComponent as CommitIcon } from '../../../../assets/icons/ic-code-commit.svg'
66
import { DeployedCommitCardType } from './appDetails.type'
77
import { showError } from '@devtron-labs/devtron-fe-common-lib'
@@ -11,6 +11,7 @@ import LoadingCard from './LoadingCard'
1111
const DeployedCommitCard = ({ cardLoading, showCommitInfoDrawer, envId, ciArtifactId }: DeployedCommitCardType) => {
1212
const [commitId, setCommitId] = useState<string>(null)
1313
const [commitMessage, setCommitMessage] = useState<string>(null)
14+
const [noValidCommit, setNoValidCommit] = useState<boolean>(false)
1415

1516
useEffect(() => {
1617
if (envId && ciArtifactId) {
@@ -22,17 +23,23 @@ const DeployedCommitCard = ({ cardLoading, showCommitInfoDrawer, envId, ciArtifa
2223
getCITriggerInfoModal(params, null)
2324
.then((response) => {
2425
const materials = response.result?.materials
25-
const lastCommit = materials[0]?.history[0]
26-
const shortenCommitId = lastCommit?.commit?.slice(0, 8)
27-
setCommitId(shortenCommitId)
28-
setCommitMessage(lastCommit?.message)
26+
if (materials && materials.length > 0) {
27+
const lastCommit = materials[0]?.history[0]
28+
const shortenCommitId = lastCommit?.commit?.slice(0, 8)
29+
setCommitId(shortenCommitId)
30+
setCommitMessage(lastCommit?.message)
31+
} else {
32+
setNoValidCommit(true)
33+
}
2934
})
3035
.catch((error) => {
3136
showError(error)
37+
setNoValidCommit(true)
3238
})
3339
}
3440
}, [envId, ciArtifactId])
3541

42+
if (noValidCommit) return null
3643
if (cardLoading || !commitId) return <LoadingCard />
3744

3845
return (
@@ -59,7 +66,9 @@ const DeployedCommitCard = ({ cardLoading, showCommitInfoDrawer, envId, ciArtifa
5966
<div className="dc__ellipsis-right cn-7 ml-2 fw-4 fs-12 dc__ff-monospace">{commitId}</div>
6067
</div>
6168
</div>
62-
<GitHub className="github-icon" />
69+
<div className="dc__git-logo" />
70+
{/* @TODO: This should be dynamic, dependent on the source */}
71+
{/* <GitHub className="github-icon" /> */}
6372
</div>
6473
<div className="app-details-info-card__bottom-container dc__content-space">
6574
<span className="app-details-info-card__bottom-container__message fs-12 fw-4">{commitMessage}</span>

src/components/app/details/appDetails/SourceInfo.tsx

Lines changed: 44 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
//@ts-nocheck
2-
3-
import React, { useMemo } from 'react'
1+
// @ts-nocheck - @TODO: Remove this by fixing the type issues
2+
import React, { useEffect, useMemo, useState } from 'react'
43
import { Link } from 'react-router-dom'
54
import { URLS } from '../../../../config'
65
import { EnvSelector } from './AppDetails'
@@ -11,7 +10,7 @@ import { Nodes, SourceInfoType } from '../../types'
1110
import Tippy from '@tippyjs/react'
1211
import { ReactComponent as LinkIcon } from '../../../../assets/icons/ic-link.svg'
1312
import { ReactComponent as Trash } from '../../../../assets/icons/ic-delete-dots.svg'
14-
import { ConditionalWrap, DeploymentAppTypes } from '@devtron-labs/devtron-fe-common-lib'
13+
import { ConditionalWrap, DeploymentAppTypes, showError } from '@devtron-labs/devtron-fe-common-lib'
1514
import DeploymentStatusCard from './DeploymentStatusCard'
1615
import { importComponentFromFELibrary } from '../../../common/helpers/Helpers'
1716
import DeploymentTypeIcon from '../../../common/DeploymentTypeIcon/DeploymentTypeIcon'
@@ -20,6 +19,7 @@ import DeployedCommitCard from './DeployedCommitCard'
2019
import IssuesCard from './IssuesCard'
2120
import SecurityVulnerabilityCard from './SecurityVulnerabilityCard'
2221
import AppStatusCard from './AppStatusCard'
22+
import { getLastExecutionByArtifactId } from '../../../../services/service'
2323

2424
const AppDetailsDownloadCard = importComponentFromFELibrary('AppDetailsDownloadCard')
2525

@@ -45,6 +45,7 @@ export function SourceInfo({
4545
ciArtifactId,
4646
setErrorsList,
4747
}: SourceInfoType) {
48+
const [showVulnerabilitiesCard, setShowVulnerabilitiesCard] = useState<boolean>(false)
4849
const isdeploymentAppDeleting = appDetails?.deploymentAppDeleteRequest || false
4950
const isArgoCdApp = appDetails?.deploymentAppType === DeploymentAppTypes.GITOPS
5051
const status = appDetails?.resourceTree?.status || ''
@@ -63,6 +64,30 @@ export function SourceInfo({
6364
message = Rollout[0].health.message
6465
}
6566

67+
const getScannedStatus = async () => {
68+
const { appId, ciArtifactId } = appDetails
69+
try {
70+
const {
71+
result: { scanEnabled, scanned },
72+
} = await getLastExecutionByArtifactId(appId, ciArtifactId)
73+
if (scanEnabled && scanned) {
74+
// If scanEnabled and scanned is true, then show the vulnerabilities card
75+
setShowVulnerabilitiesCard(true)
76+
} else {
77+
setShowVulnerabilitiesCard(false)
78+
}
79+
} catch (error) {
80+
setShowVulnerabilitiesCard(false)
81+
showError(error)
82+
}
83+
}
84+
85+
useEffect(() => {
86+
if (appDetails?.ciArtifactId && appDetails?.appId) {
87+
getScannedStatus()
88+
}
89+
}, [appDetails?.ciArtifactId, appDetails?.appId])
90+
6691
const onClickShowCommitInfo = (): void => {
6792
showCommitInfo(true)
6893
}
@@ -218,17 +243,21 @@ export function SourceInfo({
218243
isVirtualEnvironment={isVirtualEnvironment}
219244
refetchDeploymentStatus={refetchDeploymentStatus}
220245
/>
221-
<DeployedCommitCard
222-
cardLoading={cardLoading}
223-
showCommitInfoDrawer={onClickShowCommitInfo}
224-
envId={envId}
225-
ciArtifactId={ciArtifactId}
226-
/>
227-
<SecurityVulnerabilityCard
228-
cardLoading={cardLoading}
229-
severityCount={severityCount}
230-
showVulnerabilitiesModal={showVulnerabilitiesModal}
231-
/>
246+
{appDetails?.dataSource !== 'EXTERNAL' && (
247+
<DeployedCommitCard
248+
cardLoading={cardLoading}
249+
showCommitInfoDrawer={onClickShowCommitInfo}
250+
envId={envId}
251+
ciArtifactId={ciArtifactId}
252+
/>
253+
)}
254+
{!appDetails?.deploymentAppDeleteRequest && showVulnerabilitiesCard && (
255+
<SecurityVulnerabilityCard
256+
cardLoading={cardLoading}
257+
severityCount={severityCount}
258+
showVulnerabilitiesModal={showVulnerabilitiesModal}
259+
/>
260+
)}
232261
<div className="flex right ml-auto">
233262
{appDetails?.appStoreChartId && (
234263
<>

src/components/v2/appDetails/k8Resource/nodeDetail/NodeDetail.component.tsx

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -100,12 +100,6 @@ function NodeDetailComponent({
100100
}
101101
}, [loadingResources, params.node, params.namespace])
102102

103-
const isExternalEphemeralContainer = (cmds: string[], name: string): boolean => {
104-
const matchingCmd = `sh ${name}-devtron.sh`
105-
const internal = cmds?.find((cmd) => cmd.includes(matchingCmd))
106-
return !internal
107-
}
108-
109103
const getContainersFromManifest = async () => {
110104
try {
111105
const { result } = await getManifestResource(
@@ -137,30 +131,19 @@ function NodeDetailComponent({
137131
)
138132
}
139133

140-
if (Array.isArray(result.manifest.spec.ephemeralContainers)) {
141-
const ephemeralContainerStatusMap = new Map<string, string[]>()
142-
result.manifest.spec.ephemeralContainers.forEach((con) => {
143-
ephemeralContainerStatusMap.set(con.name, con.command as string[])
144-
})
145-
let ephemeralContainers = []
146-
result.manifest.status.ephemeralContainerStatuses?.forEach((_container) => {
147-
//con.state contains three states running,waiting and terminated
148-
// at any point of time only one state will be there
149-
if (_container.state.running) {
150-
ephemeralContainers.push({
151-
name: _container.name,
152-
isInitContainer: false,
153-
isEphemeralContainer: true,
154-
isExternal: isExternalEphemeralContainer(
155-
ephemeralContainerStatusMap.get(_container.name),
156-
_container.name,
157-
),
158-
})
159-
}
160-
})
161-
_resourceContainers.push(...ephemeralContainers)
162-
}
163134
}
135+
136+
if (result?.ephemeralContainers) {
137+
_resourceContainers.push(
138+
...result.ephemeralContainers.map((_container) => ({
139+
name: _container.name,
140+
isInitContainer: false,
141+
isEphemeralContainer: true,
142+
isExternal: _container.isExternal,
143+
})),
144+
)
145+
}
146+
164147
setResourceContainers(_resourceContainers)
165148
if (isResourceBrowserView) {
166149
setContainers(_resourceContainers ?? [])

src/components/v2/appDetails/sourceInfo/environmentStatus/EnvironmentStatus.component.tsx

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -118,28 +118,28 @@ function EnvironmentStatusComponent({
118118
}
119119

120120
const renderLastUpdatedBlock = () => {
121-
if (
122-
appDetails?.deploymentAppType === DeploymentAppTypes.HELM &&
123-
appDetails?.appType === AppType.DEVTRON_HELM_CHART &&
124-
appDetails?.lastDeployedTime
125-
) {
126-
return (
127-
<LastUpdatedCard
128-
deploymentTriggerTime={appDetails?.lastDeployedTime}
129-
triggeredBy={appDetails?.lastDeployedBy}
130-
cardLoading={cardLoading}
131-
/>
132-
)
121+
if (appDetails?.appType === AppType.DEVTRON_HELM_CHART && appDetails?.lastDeployedTime) {
122+
if (appDetails?.deploymentAppType === DeploymentAppTypes.HELM) {
123+
return (
124+
<LastUpdatedCard
125+
deploymentTriggerTime={appDetails?.lastDeployedTime}
126+
triggeredBy={appDetails?.lastDeployedBy}
127+
cardLoading={cardLoading}
128+
/>
129+
)
130+
} else {
131+
return (
132+
<DeploymentStatusCard
133+
deploymentStatusDetailsBreakdownData={deploymentStatusDetailsBreakdownData}
134+
cardLoading={cardLoading}
135+
hideDetails={false}
136+
refetchDeploymentStatus={refetchDeploymentStatus}
137+
isVirtualEnvironment={isVirtualEnvironment}
138+
/>
139+
)
140+
}
133141
}
134-
return (
135-
<DeploymentStatusCard
136-
deploymentStatusDetailsBreakdownData={deploymentStatusDetailsBreakdownData}
137-
cardLoading={cardLoading}
138-
hideDetails={false}
139-
refetchDeploymentStatus={refetchDeploymentStatus}
140-
isVirtualEnvironment={isVirtualEnvironment}
141-
/>
142-
)
142+
return null
143143
}
144144

145145
const renderChartUsedBlock = () => {

0 commit comments

Comments
 (0)