Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
9e36adb
fix: handle potential null value in materials check and improve node …
AbhishekA1509 Sep 25, 2025
b00aa20
Merge pull request #2937 from devtron-labs/fix/app-details-null-check
AbhishekA1509 Sep 25, 2025
0f4fb37
feat: enable infra overview
arunjaindev Sep 29, 2025
dc42617
Merge branch 'kubecon-2025' of https://github.com/devtron-labs/dashbo…
arunjaindev Sep 29, 2025
7925b14
chore: version bump
arunjaindev Sep 29, 2025
ab8cd18
chore: version bump
arunjaindev Sep 29, 2025
6602386
chore: remove unused prop
arunjaindev Sep 30, 2025
3a3b115
chore: resource context added in context switcher
shivani170 Sep 30, 2025
ed4613d
chore: version bump
shivani170 Sep 30, 2025
27b7585
Merge pull request #2942 from devtron-labs/feat/context-switcher-text
shivani170 Sep 30, 2025
a0ddc1e
chore: add fallback for target version
arunjaindev Oct 3, 2025
0fab6b2
chore: add connection failed in cluster status filter
arunjaindev Oct 6, 2025
7effa8c
fix: scoped variables un interactive if open over modal
arunjaindev Oct 8, 2025
bed65cd
Merge pull request #2949 from devtron-labs/fix/scoped-variables-inter…
arunjaindev Oct 8, 2025
8b8125e
Merge branch 'main' of https://github.com/devtron-labs/dashboard into…
arunjaindev Oct 8, 2025
e146faf
Merge pull request #2951 from devtron-labs/chore/sync-main
arunjaindev Oct 8, 2025
aea363e
chore: version bump
arunjaindev Oct 8, 2025
6dc0cfe
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
arunjaindev Oct 9, 2025
4a0cc99
chore: version bump
arunjaindev Oct 9, 2025
69044b3
Merge pull request #2953 from devtron-labs/chore/misc-fixes
arunjaindev Oct 9, 2025
96f7a00
Merge branch 'main' of https://github.com/devtron-labs/dashboard into…
arunjaindev Oct 9, 2025
1b72aca
chore: version bump
arunjaindev Oct 9, 2025
479b5c5
Merge pull request #2954 from devtron-labs/chore/sync-main
arunjaindev Oct 9, 2025
36ccf8c
Merge branch 'kubecon-2025' of https://github.com/devtron-labs/dashbo…
arunjaindev Oct 10, 2025
5438fae
Merge branch 'kubecon-2025' of https://github.com/devtron-labs/dashbo…
arunjaindev Oct 10, 2025
14b2cdd
Merge branch 'develop' of https://github.com/devtron-labs/dashboard i…
arunjaindev Oct 10, 2025
a2a57d4
Merge branch 'kubecon-2025' of https://github.com/devtron-labs/dashbo…
arunjaindev Oct 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"private": true,
"homepage": "/dashboard",
"dependencies": {
"@devtron-labs/devtron-fe-common-lib": "1.20.6-pre-2",
"@devtron-labs/devtron-fe-common-lib": "1.20.6-pre-3",
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
"@rjsf/core": "^5.13.3",
"@rjsf/utils": "^5.13.3",
Expand Down
1 change: 1 addition & 0 deletions src/components/AppSelector/AppSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ const AppSelector = ({ onChange, appId, appName, isJobView }: AppSelectorType) =
placeholder={appName}
optionListError={error}
reloadOptionList={reload}
resource={isJobView ? 'Job' : 'Application'}
/>
)
}
Expand Down
1 change: 1 addition & 0 deletions src/components/AppSelector/ChartSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ export default function ChartSelector({
{...(filterOption ? { filterOption } : {})}
optionListError={error}
reloadOptionList={reload}
resource="Chart Store"
/>
)
}
1 change: 1 addition & 0 deletions src/components/ApplicationGroup/EnvSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ export const EnvSelector = ({ onChange, envId, envName }: EnvSelectorType) => {
onInputChange={onInputChange}
optionListError={error}
reloadOptionList={reload}
resource="Application Group"
/>
)
}
2 changes: 1 addition & 1 deletion src/components/CIPipelineN/CIPipeline.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -913,7 +913,6 @@ export default function CIPipeline({

return (
<>
{renderFloatingVariablesWidget()}
{(ciPipelineId || isAdvanced) && (
<Drawer position="right" width="75%" minWidth="1024px" maxWidth="1200px" onEscape={handleClose}>
<div className="modal__body modal__body__ci_new_ui br-0 modal__body--p-0 advanced-option-container">
Expand All @@ -939,6 +938,7 @@ export default function CIPipeline({
</div>
)}
</div>
{renderFloatingVariablesWidget()}
</Drawer>
)}
<GenericModal
Expand Down
26 changes: 4 additions & 22 deletions src/components/ClusterNodes/ClusterOverview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,24 +31,19 @@ import {
showError,
StatusComponent,
StatusType,
TARGET_K8S_VERSION_SEARCH_KEY,
useAsync,
useMainContext,
} from '@devtron-labs/devtron-fe-common-lib'

import { getUpgradeCompatibilityTippyConfig } from '@Components/ResourceBrowser/ResourceList/utils'
import { ClusterDetailBaseParams } from '@Components/ResourceBrowser/Types'
import { getAvailableCharts } from '@Services/service'

import { ReactComponent as Error } from '../../assets/icons/ic-error-exclamation.svg'
import { MAX_LENGTH_350 } from '../../config/constantMessaging'
import { importComponentFromFELibrary } from '../common'
import GenericDescription from '../common/Description/GenericDescription'
import {
K8S_EMPTY_GROUP,
SIDEBAR_KEYS,
TARGET_K8S_VERSION_SEARCH_KEY,
UPGRADE_CLUSTER_CONSTANTS,
} from '../ResourceBrowser/Constants'
import { K8S_EMPTY_GROUP } from '../ResourceBrowser/Constants'
import {
getClusterOverviewClusterCapacity,
getClusterOverviewDetails,
Expand Down Expand Up @@ -115,7 +110,7 @@ const LoadingMetricCard = () => (
</div>
)

function ClusterOverview({ selectedCluster, addTab }: ClusterOverviewProps) {
function ClusterOverview({ selectedCluster }: ClusterOverviewProps) {
const { clusterId } = useParams<ClusterDetailBaseParams>()

const { isSuperAdmin } = useMainContext()
Expand Down Expand Up @@ -339,24 +334,11 @@ function ClusterOverview({ selectedCluster, addTab }: ClusterOverviewProps) {
)

const handleOpenScanClusterTab = (selectedVersion: string) => {
const upgradeClusterLowerCaseKind = SIDEBAR_KEYS.upgradeClusterGVK.Kind.toLowerCase()

const URL = getUrlWithSearchParams(generatePath(RESOURCE_BROWSER_ROUTES.CLUSTER_UPGRADE, { clusterId }), {
[TARGET_K8S_VERSION_SEARCH_KEY]: selectedVersion,
})

addTab({
idPrefix: UPGRADE_CLUSTER_CONSTANTS.ID_PREFIX,
kind: upgradeClusterLowerCaseKind,
name: UPGRADE_CLUSTER_CONSTANTS.NAME,
url: URL,
dynamicTitle: `${UPGRADE_CLUSTER_CONSTANTS.DYNAMIC_TITLE} to v${selectedVersion}`,
tippyConfig: getUpgradeCompatibilityTippyConfig({
targetK8sVersion: selectedVersion,
}),
})
.then(() => history.push(URL))
.catch(noop)
history.push(URL)
}

const creationPrefix = clusterConfig ? 'Created' : 'Added'
Expand Down
1 change: 1 addition & 0 deletions src/components/ClusterNodes/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ export const manifestCommentsRegex = /^(.*?apiVersion:)/s
export const ClusterStatusByFilter: Record<ClusterFiltersType, ClusterStatusType> = {
[ClusterFiltersType.HEALTHY]: ClusterStatusType.HEALTHY,
[ClusterFiltersType.UNHEALTHY]: ClusterStatusType.UNHEALTHY,
[ClusterFiltersType.CONNECTION_FAILED]: ClusterStatusType.CONNECTION_FAILED,
[ClusterFiltersType.ALL_CLUSTERS]: null,
}

Expand Down
1 change: 0 additions & 1 deletion src/components/ClusterNodes/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,6 @@ export interface ClusterErrorType {
}
export interface ClusterOverviewProps {
selectedCluster: ClusterOptionType
addTab: UseTabsReturnType['addTab']
}

export enum TaintsTableHeaderKeys {
Expand Down
3 changes: 1 addition & 2 deletions src/components/Navigation/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -264,8 +264,7 @@ export const NAVIGATION_LIST: NavigationGroupType[] = [
dataTestId: 'infrastructure-management-overview',
id: 'infrastructure-management-overview',
icon: 'ic-speedometer',
href: '/dummy-url',
disabled: true,
href: COMMON_URLS.INFRASTRUCTURE_MANAGEMENT_OVERVIEW,
},
{
title: 'Resource Browser',
Expand Down
2 changes: 0 additions & 2 deletions src/components/ResourceBrowser/Constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -276,8 +276,6 @@ export const CONNECTION_TIMEOUT_TIME = 10000

export const DEFAULT_K8SLIST_PAGE_SIZE = 100

export const TARGET_K8S_VERSION_SEARCH_KEY = 'targetK8sVersion'

export const NODE_LIST_HEADERS = [
'name',
'status',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ const ClusterSelector: React.FC<ClusterSelectorType> = ({
)}
inputValue={inputValue}
onInputChange={onInputChange}
resource="Cluster"
/>

{defaultOption?.isProd && <Badge label="Production" size={ComponentSizeType.xxs} />}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import {
PaginationEnum,
Progressing,
Table,
TARGET_K8S_VERSION_SEARCH_KEY,
URL_FILTER_KEYS,
URLS,
useSearchString,
Expand All @@ -37,7 +38,6 @@ import emptyCustomChart from '@Images/[email protected]'
import { ReactComponent as NoOffendingPipeline } from '@Images/no-offending-pipeline.svg'
import { importComponentFromFELibrary } from '@Components/common'

import { TARGET_K8S_VERSION_SEARCH_KEY } from '../Constants'
import { ClusterDetailBaseParams } from '../Types'
import ClusterUpgradeCompatibilityInfoTableCellComponent from './ClusterUpgradeCompatibilityInfoTableCellComponent'
import ClusterUpgradeCompatibilityInfoTableWrapper from './ClusterUpgradeCompatibilityInfoTableWrapper'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,12 @@
import { cloneElement, ReactElement, useEffect } from 'react'
import { useLocation, useParams, useRouteMatch } from 'react-router-dom'

import { logExceptionToSentry, noop, RESOURCE_BROWSER_ROUTES } from '@devtron-labs/devtron-fe-common-lib'
import {
logExceptionToSentry,
noop,
RESOURCE_BROWSER_ROUTES,
TARGET_K8S_VERSION_SEARCH_KEY,
} from '@devtron-labs/devtron-fe-common-lib'

import { UPGRADE_CLUSTER_CONSTANTS } from '../Constants'
import { DynamicTabComponentWrapperProps } from './types'
Expand All @@ -34,6 +39,7 @@ export const DynamicTabComponentWrapper = ({
const { pathname, search } = useLocation()
const { path } = useRouteMatch()
const params = useParams<Record<string, string>>()
const searchParams = new URLSearchParams(search)

const tabId = getTabIdForTab(path, getTabId, params)

Expand All @@ -47,7 +53,8 @@ export const DynamicTabComponentWrapper = ({
.then((found) => {
if (!found && addTab) {
const [idPrefix, name, kind] = getTabIdParamsForPath(path, params) || []
const { targetK8sVersion = '' } = params
const targetK8sVersion = searchParams.get(TARGET_K8S_VERSION_SEARCH_KEY) || ''

addTab({
idPrefix,
name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ const ResourceList = ({ selectedCluster, k8SObjectMapRaw }: ResourceListProps) =
/>
<Route path={RESOURCE_BROWSER_ROUTES.OVERVIEW} exact>
<DynamicTabComponentWrapper type="fixed" {...DynamicTabComponentWrapperBaseProps}>
<ClusterOverview selectedCluster={selectedCluster} addTab={addTab} />
<ClusterOverview selectedCluster={selectedCluster} />
</DynamicTabComponentWrapper>
</Route>
{MonitoringDashboard && (
Expand Down
2 changes: 1 addition & 1 deletion src/components/ResourceBrowser/ResourceList/utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import {
RecentlyVisitedOptions,
RESOURCE_BROWSER_ROUTES,
stringComparatorBySortOrder,
TARGET_K8S_VERSION_SEARCH_KEY,
TreeHeading,
TreeItem,
TreeNode,
Expand All @@ -46,7 +47,6 @@ import {
NODE_SEARCH_KEYS_TO_OBJECT_KEYS,
ResourceBrowserRouteToTabIdMap,
SIDEBAR_KEYS,
TARGET_K8S_VERSION_SEARCH_KEY,
UPGRADE_CLUSTER_CONSTANTS,
} from '../Constants'
import {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const DeployedCommitCard = ({ cardLoading, showCommitInfoDrawer, envId, ciArtifa
return <LoadingCard />
}

if (materials.length === 0 || !materials[0].history[0]?.commit?.slice(0, 7)) {
if (!materials?.length || !materials[0].history[0]?.commit?.slice(0, 7)) {
return null
}

Expand Down
16 changes: 8 additions & 8 deletions src/components/cdPipeline/CDPipeline.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -730,7 +730,10 @@ export default function CDPipeline({
environmentId: formData.environmentId,
namespace: formData.namespace,
id: +cdPipelineId,
strategies: formData.releaseMode === ReleaseMode.MIGRATE_EXTERNAL_APPS && formData.isCustomChart ? [] : formData.savedStrategies,
strategies:
formData.releaseMode === ReleaseMode.MIGRATE_EXTERNAL_APPS && formData.isCustomChart
? []
: formData.savedStrategies,
parentPipelineType,
parentPipelineId: +parentPipelineId,
isClusterCdActive: formData.isClusterCdActive,
Expand Down Expand Up @@ -1504,6 +1507,7 @@ export default function CDPipeline({
envId={formData.environmentId}
/>
)}
{(cdPipelineId || isAdvanced) && renderFloatingVariablesWidget()}
</div>
)
}
Expand Down Expand Up @@ -1533,13 +1537,9 @@ export default function CDPipeline({
}

return cdPipelineId || isAdvanced ? (
<>
{renderFloatingVariablesWidget()}

<Drawer onEscape={closePipelineModal} position="right" width="75%" minWidth="1024px" maxWidth="1200px">
{renderCDPipelineModal()}
</Drawer>
</>
<Drawer onEscape={closePipelineModal} position="right" width="75%" minWidth="1024px" maxWidth="1200px">
{renderCDPipelineModal()}
</Drawer>
) : (
<VisibleModal className="">{renderCDPipelineModal()}</VisibleModal>
)
Expand Down
1 change: 1 addition & 0 deletions src/components/common/navigation/NavigationRoutes.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,7 @@ const NavigationRoutes = ({ reloadVersionConfig }: Readonly<NavigationRoutesType
CommonURLS.APPLICATION_MANAGEMENT,
CommonURLS.COST_VISIBILITY,
CommonURLS.AI_RECOMMENDATIONS,
CommonURLS.INFRASTRUCTURE_MANAGEMENT,
CommonURLS.DATA_PROTECTION,
]}
>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ const NodeComponent = ({
let _healthyNodeCount = 0

_selectedNodes.forEach((node: Node) => {
if (node.health?.status.toLowerCase() === 'healthy') {
if (node.health?.status?.toLowerCase() === 'healthy') {
_healthyNodeCount += 1
}
})
Expand Down
10 changes: 5 additions & 5 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1722,9 +1722,9 @@ __metadata:
languageName: node
linkType: hard

"@devtron-labs/devtron-fe-common-lib@npm:1.20.6-pre-2":
version: 1.20.6-pre-2
resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.20.6-pre-2"
"@devtron-labs/devtron-fe-common-lib@npm:1.20.6-pre-3":
version: 1.20.6-pre-3
resolution: "@devtron-labs/devtron-fe-common-lib@npm:1.20.6-pre-3"
dependencies:
"@codemirror/autocomplete": "npm:6.18.6"
"@codemirror/lang-json": "npm:6.0.1"
Expand Down Expand Up @@ -1776,7 +1776,7 @@ __metadata:
react-select: 5.8.0
rxjs: ^7.8.1
yaml: ^2.4.1
checksum: 10c0/da4d670d335bbb3f818b7b59ea4ae13dad3ac992b77319f728e7b54b29976556ff754cd8bfdd35916b2e1e2c7b62745b3f730d5338e26317e3078f01d2a7c180
checksum: 10c0/941a704a582adc63f39c3093b1adfbab8768e4bc1594a0320cdca016f6dd58e850f683f65438980770cd267e7eae93a0b030ccee76ba5e0bcfc4c1c35b77d815
languageName: node
linkType: hard

Expand Down Expand Up @@ -5581,7 +5581,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "dashboard@workspace:."
dependencies:
"@devtron-labs/devtron-fe-common-lib": "npm:1.20.6-pre-2"
"@devtron-labs/devtron-fe-common-lib": "npm:1.20.6-pre-3"
"@esbuild-plugins/node-globals-polyfill": "npm:0.2.3"
"@playwright/test": "npm:^1.32.1"
"@rjsf/core": "npm:^5.13.3"
Expand Down