Skip to content

Commit ce8cdec

Browse files
committed
feat(diagnostics): demote heap/thread dumps features to BETA feature level
1 parent f8d2e0c commit ce8cdec

File tree

3 files changed

+121
-108
lines changed

3 files changed

+121
-108
lines changed

src/app/Dashboard/Diagnostics/DiagnosticsCard.tsx

Lines changed: 57 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ import { ListIcon, WrenchIcon } from '@patternfly/react-icons';
4949
import * as React from 'react';
5050
import { concatMap, filter, first } from 'rxjs/operators';
5151
import { DashboardCard } from '../DashboardCard';
52+
import { FeatureFlag } from '@app/Shared/Components/FeatureFlag';
5253

5354
export interface DiagnosticsCardProps extends DashboardCardTypeProps {}
5455

@@ -209,62 +210,66 @@ export const DiagnosticsCard: DashboardCardFC<DiagnosticsCardProps> = (props) =>
209210
</ActionListItem>
210211
</ActionList>
211212
</StackItem>
212-
<StackItem>
213-
<ActionList>
214-
<ActionListItem data-quickstart-id="thread-dumps-invoke-btn">
215-
<Button
216-
variant="primary"
217-
onClick={handleThreadDump}
218-
spinnerAriaValueText="Invoke Thread Dump"
219-
spinnerAriaLabel="invoke-thread-dump"
220-
isLoading={runningThreadDump}
221-
>
222-
{t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_BUTTON')}
223-
</Button>
224-
</ActionListItem>
225-
<ActionListItem data-quickstart-id="thread-dumps-archive-btn">
226-
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_TABLE_TOOLTIP')}>
227-
<Button
228-
variant="primary"
229-
isAriaDisabled={!threadDumpReady}
230-
component={(props) => <CryostatLink {...props} to="/thread-dumps" />}
231-
icon={<ListIcon />}
232-
/>
233-
</Tooltip>
234-
</ActionListItem>
235-
</ActionList>
236-
</StackItem>
237-
<StackItem>
238-
<ActionList>
239-
<ActionListItem data-quickstart-id="heap-dumps-invoke-btn">
240-
<Tooltip
241-
trigger={controlEnabled ? 'manual' : 'mouseenter focus'}
242-
content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON_DISABLED')}
243-
>
213+
<FeatureFlag level={FeatureLevel.BETA}>
214+
<StackItem>
215+
<ActionList>
216+
<ActionListItem data-quickstart-id="thread-dumps-invoke-btn">
244217
<Button
245218
variant="primary"
246-
onClick={handleHeapDump}
247-
isAriaDisabled={!controlEnabled}
248-
spinnerAriaValueText="Invoke Heap Dump"
249-
spinnerAriaLabel="invoke-heap-dump"
250-
isLoading={runningHeapDump}
219+
onClick={handleThreadDump}
220+
spinnerAriaValueText="Invoke Thread Dump"
221+
spinnerAriaLabel="invoke-thread-dump"
222+
isLoading={runningThreadDump}
251223
>
252-
{t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON')}
224+
{t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_BUTTON')}
253225
</Button>
254-
</Tooltip>
255-
</ActionListItem>
256-
<ActionListItem data-quickstart-id="heap-dumps-archive-btn">
257-
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_REDIRECT_BUTTON')}>
258-
<Button
259-
variant="primary"
260-
isAriaDisabled={!(heapDumpReady && controlEnabled)}
261-
component={(props) => <CryostatLink {...props} to="/heapdumps" />}
262-
icon={<ListIcon />}
263-
/>
264-
</Tooltip>
265-
</ActionListItem>
266-
</ActionList>
267-
</StackItem>
226+
</ActionListItem>
227+
<ActionListItem data-quickstart-id="thread-dumps-archive-btn">
228+
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_TABLE_TOOLTIP')}>
229+
<Button
230+
variant="primary"
231+
isAriaDisabled={!threadDumpReady}
232+
component={(props) => <CryostatLink {...props} to="/thread-dumps" />}
233+
icon={<ListIcon />}
234+
/>
235+
</Tooltip>
236+
</ActionListItem>
237+
</ActionList>
238+
</StackItem>
239+
</FeatureFlag>
240+
<FeatureFlag level={FeatureLevel.BETA}>
241+
<StackItem>
242+
<ActionList>
243+
<ActionListItem data-quickstart-id="heap-dumps-invoke-btn">
244+
<Tooltip
245+
trigger={controlEnabled ? 'manual' : 'mouseenter focus'}
246+
content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON_DISABLED')}
247+
>
248+
<Button
249+
variant="primary"
250+
onClick={handleHeapDump}
251+
isAriaDisabled={!controlEnabled}
252+
spinnerAriaValueText="Invoke Heap Dump"
253+
spinnerAriaLabel="invoke-heap-dump"
254+
isLoading={runningHeapDump}
255+
>
256+
{t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON')}
257+
</Button>
258+
</Tooltip>
259+
</ActionListItem>
260+
<ActionListItem data-quickstart-id="heap-dumps-archive-btn">
261+
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_REDIRECT_BUTTON')}>
262+
<Button
263+
variant="primary"
264+
isAriaDisabled={!(heapDumpReady && controlEnabled)}
265+
component={(props) => <CryostatLink {...props} to="/heapdumps" />}
266+
icon={<ListIcon />}
267+
/>
268+
</Tooltip>
269+
</ActionListItem>
270+
</ActionList>
271+
</StackItem>
272+
</FeatureFlag>
268273
</Stack>
269274
</EmptyStateFooter>
270275
</EmptyState>

src/app/Diagnostics/CaptureDiagnostics.tsx

Lines changed: 62 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,10 @@
1515
*/
1616
import { MBeanMetricsChartCard } from '@app/Dashboard/Charts/mbean/MBeanMetricsChartCard';
1717
import { CryostatLink } from '@app/Shared/Components/CryostatLink';
18+
import { FeatureFlag } from '@app/Shared/Components/FeatureFlag';
1819
import { NotificationCategory } from '@app/Shared/Services/api.types';
1920
import { NotificationsContext } from '@app/Shared/Services/Notifications.service';
21+
import { FeatureLevel } from '@app/Shared/Services/service.types';
2022
import { ServiceContext } from '@app/Shared/Services/Services';
2123
import { TargetView } from '@app/TargetView/TargetView';
2224
import { useSubscriptions } from '@app/utils/hooks/useSubscriptions';
@@ -168,66 +170,70 @@ export const CaptureDiagnostics: React.FC<CaptureDiagnosticsProps> = ({ ...props
168170
</ActionListItem>
169171
</ActionList>
170172
</StackItem>
171-
<StackItem>
172-
<ActionList>
173-
<ActionListItem>
174-
<Button
175-
variant="primary"
176-
onClick={handleThreadDump}
177-
data-quickstart-id="thread-dumps-invoke-btn"
178-
spinnerAriaValueText="Invoke Thread Dump"
179-
spinnerAriaLabel="invoke-thread-dump"
180-
isLoading={runningThreadDump}
181-
>
182-
{t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_BUTTON')}
183-
</Button>
184-
</ActionListItem>
185-
<ActionListItem>
186-
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_TABLE_TOOLTIP')}>
187-
<Button
188-
variant="primary"
189-
isAriaDisabled={!threadDumpReady}
190-
data-quickstart-id="thread-dumps-archive-btn"
191-
component={(props) => <CryostatLink {...props} to="/thread-dumps" />}
192-
icon={<ListIcon />}
193-
/>
194-
</Tooltip>
195-
</ActionListItem>
196-
</ActionList>
197-
</StackItem>
198-
<StackItem>
199-
<ActionList>
200-
<ActionListItem>
201-
<Tooltip
202-
trigger={controlEnabled ? 'manual' : 'mouseenter focus'}
203-
content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON_DISABLED')}
204-
>
173+
<FeatureFlag level={FeatureLevel.BETA}>
174+
<StackItem>
175+
<ActionList>
176+
<ActionListItem>
205177
<Button
206178
variant="primary"
207-
isAriaDisabled={!controlEnabled}
208-
onClick={handleHeapDump}
209-
data-quickstart-id="heap-dumps-invoke-btn"
210-
spinnerAriaValueText="Invoke Heap Dump"
211-
spinnerAriaLabel="invoke-heap-dump"
212-
isLoading={runningHeapDump}
179+
onClick={handleThreadDump}
180+
data-quickstart-id="thread-dumps-invoke-btn"
181+
spinnerAriaValueText="Invoke Thread Dump"
182+
spinnerAriaLabel="invoke-thread-dump"
183+
isLoading={runningThreadDump}
213184
>
214-
{t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON')}
185+
{t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_BUTTON')}
215186
</Button>
216-
</Tooltip>
217-
</ActionListItem>
218-
<ActionListItem>
219-
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_REDIRECT_BUTTON')}>
220-
<Button
221-
variant="primary"
222-
isAriaDisabled={!heapDumpReady}
223-
data-quickstart-id="heap-dumps-archive-btn"
224-
component={(props) => <CryostatLink {...props} to="/heapdumps" />}
225-
icon={<ListIcon />}
226-
/>
227-
</Tooltip>
228-
</ActionListItem>
229-
</ActionList>
230-
</StackItem>
187+
</ActionListItem>
188+
<ActionListItem>
189+
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_THREAD_DUMP_TABLE_TOOLTIP')}>
190+
<Button
191+
variant="primary"
192+
isAriaDisabled={!threadDumpReady}
193+
data-quickstart-id="thread-dumps-archive-btn"
194+
component={(props) => <CryostatLink {...props} to="/thread-dumps" />}
195+
icon={<ListIcon />}
196+
/>
197+
</Tooltip>
198+
</ActionListItem>
199+
</ActionList>
200+
</StackItem>
201+
</FeatureFlag>
202+
<FeatureFlag level={FeatureLevel.BETA}>
203+
<StackItem>
204+
<ActionList>
205+
<ActionListItem>
206+
<Tooltip
207+
trigger={controlEnabled ? 'manual' : 'mouseenter focus'}
208+
content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON_DISABLED')}
209+
>
210+
<Button
211+
variant="primary"
212+
isAriaDisabled={!controlEnabled}
213+
onClick={handleHeapDump}
214+
data-quickstart-id="heap-dumps-invoke-btn"
215+
spinnerAriaValueText="Invoke Heap Dump"
216+
spinnerAriaLabel="invoke-heap-dump"
217+
isLoading={runningHeapDump}
218+
>
219+
{t('DiagnosticsCard.DIAGNOSTICS_HEAP_DUMP_BUTTON')}
220+
</Button>
221+
</Tooltip>
222+
</ActionListItem>
223+
<ActionListItem>
224+
<Tooltip content={t('DiagnosticsCard.DIAGNOSTICS_HEAP_REDIRECT_BUTTON')}>
225+
<Button
226+
variant="primary"
227+
isAriaDisabled={!heapDumpReady}
228+
data-quickstart-id="heap-dumps-archive-btn"
229+
component={(props) => <CryostatLink {...props} to="/heapdumps" />}
230+
icon={<ListIcon />}
231+
/>
232+
</Tooltip>
233+
</ActionListItem>
234+
</ActionList>
235+
</StackItem>
236+
</FeatureFlag>
231237
</Stack>
232238
</Bullseye>
233239
</CardBody>

src/app/routes.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ const diagnosticsRoutes: IAppRoute[] = [
187187
description: 'View thread dumps on single target JVMs.',
188188
navGroup: DIAGNOSTICS,
189189
navSubgroup: ANALYZE,
190+
featureLevel: FeatureLevel.BETA,
190191
},
191192
{
192193
component: AnalyzeHeapDumps,
@@ -196,6 +197,7 @@ const diagnosticsRoutes: IAppRoute[] = [
196197
description: 'Create and view heap dumps on single target JVMs.',
197198
navGroup: DIAGNOSTICS,
198199
navSubgroup: ANALYZE,
200+
featureLevel: FeatureLevel.BETA,
199201
},
200202
];
201203

0 commit comments

Comments
 (0)