@@ -18,6 +18,8 @@ import React, { useEffect, useMemo, useRef, useState } from 'react'
1818import { Redirect , Route , Switch , useLocation , useParams , useRouteMatch } from 'react-router-dom'
1919
2020import {
21+ Button ,
22+ ButtonVariantType ,
2123 capitalizeFirstLetter ,
2224 Checkbox ,
2325 CHECKBOX_VALUE ,
@@ -26,6 +28,7 @@ import {
2628 DeploymentAppTypes ,
2729 FormProps ,
2830 getAIAnalyticsEvents ,
31+ Icon ,
2932 noop ,
3033 OptionsBase ,
3134 OptionType ,
@@ -67,7 +70,7 @@ import LogsComponent from './NodeDetailTabs/Logs.component'
6770import ManifestComponent from './NodeDetailTabs/Manifest.component'
6871import TerminalComponent from './NodeDetailTabs/Terminal.component'
6972import EphemeralContainerDrawer from './EphemeralContainerDrawer'
70- import { getManifestResource } from './nodeDetail.api'
73+ import { getManifestResource , updateManifestResourceHelmApps } from './nodeDetail.api'
7174import { NodeDetailTab , ParamsType } from './nodeDetail.type'
7275import { getContainersData , getNodeDetailTabs } from './nodeDetail.util'
7376
@@ -79,6 +82,7 @@ const ToggleManifestConfigurationMode = importComponentFromFELibrary(
7982 null ,
8083 'function' ,
8184)
85+ const RBRestartWorkloadModal = importComponentFromFELibrary ( 'RBRestartWorkloadModal' , null , 'function' )
8286
8387const NodeDetailComponent = ( {
8488 loadingResources,
@@ -106,6 +110,7 @@ const NodeDetailComponent = ({
106110 const [ fetchingResource , setFetchingResource ] = useState (
107111 isResourceBrowserView && nodeType === Nodes . Pod . toLowerCase ( ) ,
108112 )
113+ const [ showRestartModal , setShowRestartModal ] = useState ( false )
109114 const [ selectedContainer , setSelectedContainer ] = useState < Map < string , string > > ( new Map ( ) )
110115 const [ showEphemeralContainerDrawer , setShowEphemeralContainerDrawer ] = useState < boolean > ( false )
111116 const [ ephemeralContainerType , setEphemeralContainerType ] = useState < string > ( EDITOR_VIEW . BASIC )
@@ -375,6 +380,10 @@ const NodeDetailComponent = ({
375380 setManifestCodeEditorMode ( ManifestCodeEditorMode . REVIEW )
376381 }
377382
383+ const onRestartWorkloadModalClose = ( ) => {
384+ setShowRestartModal ( false )
385+ }
386+
378387 const handleManifestCompareWithDesired = ( ) => setShowManifestCompareView ( true )
379388
380389 const renderPodTerminal = ( ) : JSX . Element => {
@@ -518,6 +527,10 @@ const NodeDetailComponent = ({
518527 } ,
519528 } ) )
520529
530+ const onRestartWorkloadButtonClick = ( ) => {
531+ setShowRestartModal ( true )
532+ }
533+
521534 return (
522535 < >
523536 < div className = "w-100 pr-20 pl-20 bg__primary flex border__secondary--bottom dc__content-space h-32" >
@@ -550,6 +563,20 @@ const NodeDetailComponent = ({
550563 </ >
551564 ) }
552565 { selectedTabName === NodeDetailTab . MANIFEST && renderManifestTabHeader ( ) }
566+ { RBRestartWorkloadModal &&
567+ window . _env_ . FEATURE_BULK_RESTART_WORKLOADS_FROM_RB . includes ( nodeType . toLowerCase ( ) ) && (
568+ < >
569+ < div className = "ml-12 mr-12 tab-cell-border" />
570+ < Button
571+ dataTestId = "restart-workload-button"
572+ variant = { ButtonVariantType . text }
573+ size = { ComponentSizeType . small }
574+ startIcon = { < Icon name = "ic-arrow-clockwise" color = { null } /> }
575+ onClick = { onRestartWorkloadButtonClick }
576+ text = "Restart"
577+ />
578+ </ >
579+ ) }
553580 </ div >
554581 { isResourceBrowserView &&
555582 ! hideDeleteButton && ( // hide delete button if resource is deleted or user is not authorized
@@ -670,6 +697,14 @@ const NodeDetailComponent = ({
670697 handleClearBulkSelection = { noop }
671698 />
672699 ) }
700+ { RBRestartWorkloadModal && showRestartModal && (
701+ < RBRestartWorkloadModal
702+ resource = { selectedResource }
703+ getManifestResource = { getManifestResource }
704+ updateManifestResourceHelmApps = { updateManifestResourceHelmApps }
705+ onClose = { onRestartWorkloadModalClose }
706+ />
707+ ) }
673708 </ >
674709 )
675710}
0 commit comments