Skip to content

Commit e7f3b64

Browse files
authored
Merge pull request #124 from headlamp-k8s/enable-force-reconciliation
flux-plugin: Enable/Disable force reconciliation
2 parents dd2e54c + ca96343 commit e7f3b64

File tree

8 files changed

+62
-8
lines changed

8 files changed

+62
-8
lines changed

flux/src/actions/index.tsx

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,55 @@ import { KubeObject } from '@kinvolk/headlamp-plugin/lib/lib/k8s/cluster';
33
import { useSnackbar } from 'notistack';
44
import React from 'react';
55

6+
function ForceReconciliationAction(props) {
7+
const { enqueueSnackbar } = useSnackbar();
8+
const [open, setOpen] = React.useState<boolean>(false);
9+
const { resource } = props;
10+
11+
return (
12+
<>
13+
<ActionButton
14+
description={resource.jsonData.spec.force ? `Disable force reconciliation for ${resource.metadata.name}` : `Enable force reconciliation for ${resource.metadata.name}` }
15+
icon={resource.jsonData.spec.force ? 'mdi:invoice-text-remove' : 'mdi:invoice-text-new'}
16+
onClick={() => {
17+
setOpen(true);
18+
}}
19+
/>
20+
<ConfirmDialog
21+
open={open}
22+
handleClose={() => setOpen(false)}
23+
onConfirm={() => {
24+
setOpen(false);
25+
const patch = resource.constructor.apiEndpoint.patch;
26+
patch(
27+
{
28+
spec: {
29+
force: !resource.jsonData.spec.force,
30+
},
31+
},
32+
resource.jsonData.metadata.namespace,
33+
resource.jsonData.metadata.name
34+
)
35+
.then(response => {
36+
enqueueSnackbar(
37+
response.spec.force ? `Successfully Disabled force reconciliation for ${resource.metadata.name}` : `Successfully Enabled force reconciliation for ${resource.metadata.name}`,
38+
{ variant: 'success' }
39+
);
40+
})
41+
.catch(error => {
42+
enqueueSnackbar(
43+
`error ${error}`,
44+
{ variant: 'error' }
45+
);
46+
});
47+
}}
48+
title={resource.jsonData.force ? 'Enable Force Reconciliation' : 'Disable Force Reconciliation' }
49+
description={`${resource.jsonData.force ? 'Are you sure you want to enable force reconciliation for ' : 'Are you sure you want to disable force reconciliation for '}${resource?.jsonData.metadata.name}?`}
50+
/>
51+
</>
52+
);
53+
}
54+
655
function SuspendAction(props) {
756
const { enqueueSnackbar } = useSnackbar();
857
const { resource } = props;
@@ -248,4 +297,4 @@ function SyncWithoutSourceAction(props) {
248297
);
249298
}
250299

251-
export { SuspendAction, ResumeAction, SyncAction, SyncWithSourceAction, SyncWithoutSourceAction };
300+
export { SuspendAction, ResumeAction, SyncAction, SyncWithSourceAction, SyncWithoutSourceAction, ForceReconciliationAction };

flux/src/helm-releases/HelmReleaseSingle.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import React from 'react';
1313
import { useParams } from 'react-router-dom';
1414
import YAML from 'yaml';
1515
import {
16+
ForceReconciliationAction,
1617
ResumeAction,
1718
SuspendAction,
1819
SyncWithoutSourceAction,
@@ -163,6 +164,7 @@ function CustomResourceDetails(props) {
163164
actions.push(<SyncWithoutSourceAction resource={cr} />);
164165
actions.push(<SuspendAction resource={cr} />);
165166
actions.push(<ResumeAction resource={cr} />);
167+
actions.push(<ForceReconciliationAction resource={cr} />);
166168
return actions;
167169
}
168170

flux/src/helpers/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ export function ObjectEvents(props: { events: any }) {
133133

134134
export function prepareNameLink(item) {
135135
const kind = item.kind;
136-
console.log('item', item);
137136
if (kind === 'Kustomization' || kind === 'HelmRelease' || kind in kindToSourceType) {
138137
const { name, type } = getSourceNameAndType(item);
139138
if (!!name && !!type) {

flux/src/image-automation/ImageAutomationSingle.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Editor from '@monaco-editor/react';
1010
import React from 'react';
1111
import { useParams } from 'react-router-dom';
1212
import YAML from 'yaml';
13-
import { ResumeAction, SuspendAction, SyncAction } from '../actions/index';
13+
import { ForceReconciliationAction, ResumeAction, SuspendAction, SyncAction } from '../actions/index';
1414
import Link from '../common/Link';
1515
import RemainingTimeDisplay from '../common/RemainingTimeDisplay';
1616
import StatusLabel from '../common/StatusLabel';
@@ -191,6 +191,7 @@ function CustomResourceDetails(props) {
191191
<SyncAction resource={cr} />,
192192
<SuspendAction resource={cr} />,
193193
<ResumeAction resource={cr} />,
194+
<ForceReconciliationAction resource={cr} />,
194195
]}
195196
/>
196197
<SectionBox title="Conditions">

flux/src/kustomizations/KustomizationSingle.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import React from 'react';
1212
import { useParams } from 'react-router-dom';
1313
import YAML from 'yaml';
1414
import {
15+
ForceReconciliationAction,
1516
ResumeAction,
1617
SuspendAction,
1718
SyncWithoutSourceAction,
@@ -95,7 +96,7 @@ function CustomResourceDetails(props) {
9596
},
9697
{
9798
name: 'Force',
98-
value: cr?.jsonData.spec?.force,
99+
value: cr?.jsonData.spec?.force.toString(),
99100
},
100101
{
101102
name: 'Path',
@@ -147,6 +148,8 @@ function CustomResourceDetails(props) {
147148
actions.push(<SyncWithoutSourceAction resource={cr} />);
148149
actions.push(<SuspendAction resource={cr} />);
149150
actions.push(<ResumeAction resource={cr} />);
151+
actions.push(<ForceReconciliationAction resource={cr} />);
152+
150153
return actions;
151154
}
152155

flux/src/notifications/NotificationSingle.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
import Event from '@kinvolk/headlamp-plugin/lib/k8s/event';
99
import React from 'react';
1010
import { useParams } from 'react-router-dom';
11-
import { ResumeAction, SuspendAction, SyncAction } from '../actions/index';
11+
import { ForceReconciliationAction, ResumeAction, SuspendAction, SyncAction } from '../actions/index';
1212
import RemainingTimeDisplay from '../common/RemainingTimeDisplay';
1313
import { ObjectEvents } from '../helpers/index';
1414

@@ -103,6 +103,7 @@ function CustomResourceDetails(props) {
103103
<SyncAction resource={cr} />,
104104
<SuspendAction resource={cr} />,
105105
<ResumeAction resource={cr} />,
106+
<ForceReconciliationAction resource={cr} />,
106107
]}
107108
/>
108109
<SectionBox title="Conditions">

flux/src/sources/SourceCustomResourceSingle.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,14 +124,12 @@ function FluxSourceCustomResourceRenderer(props: FluxSourceCustomResourceRendere
124124
columns.splice(colIndexToInsert++, 0, {
125125
header: 'URL',
126126
accessorFn: item => {
127-
console.log(item);
128127
const url = item?.jsonData?.spec?.url;
129128
return url ? <SourceLink url={url} wrap /> : '-';
130129
},
131130
});
132131
}
133132

134-
console.log(title);
135133
return (
136134
<SectionBox title={title}>
137135
<Table

flux/src/sources/SourceSingle.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
import Event from '@kinvolk/headlamp-plugin/lib/K8s/event';
1010
import React from 'react';
1111
import { useParams } from 'react-router-dom';
12-
import { ResumeAction, SuspendAction, SyncAction } from '../actions/index';
12+
import { ForceReconciliationAction, ResumeAction, SuspendAction, SyncAction } from '../actions/index';
1313
import Link from '../common/Link';
1414
import RemainingTimeDisplay from '../common/RemainingTimeDisplay';
1515
import StatusLabel from '../common/StatusLabel';
@@ -99,6 +99,7 @@ function CustomResourceDetailView(props) {
9999
<SyncAction resource={cr} />,
100100
<SuspendAction resource={cr} />,
101101
<ResumeAction resource={cr} />,
102+
<ForceReconciliationAction resource={cr} />,
102103
]}
103104
extraInfo={prepareExtraInfo()}
104105
/>

0 commit comments

Comments
 (0)