Skip to content

Commit fb0cfa6

Browse files
bnussman-akamaibnussman
authored andcommitted
fix: [M3-9737] - NodeBalancer queries (linode#12217)
* initial nodebalancer querys clean up * Added changeset: Made `lke_cluster` and `type` defined in the `NodeBalancer` type * Added changeset: NodeBalancer label and connection throttle not updating until page refresh * Added changeset: `isUsingBetaEndpoint` parameter from `useNodeBalancerQuery` --------- Co-authored-by: Banks Nussman <[email protected]>
1 parent 04bd275 commit fb0cfa6

File tree

10 files changed

+114
-96
lines changed

10 files changed

+114
-96
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/api-v4": Changed
3+
---
4+
5+
Made `lke_cluster` and `type` defined in the `NodeBalancer` type ([#12217](https://github.com/linode/manager/pull/12217))

packages/api-v4/src/nodebalancers/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,11 @@ export interface NodeBalancer {
4242
* If the NB is associated with a cluster (active or deleted), return its info
4343
* If the NB is not associated with a cluster, return null
4444
*/
45-
lke_cluster?: LKEClusterInfo | null;
45+
lke_cluster: LKEClusterInfo | null;
4646
region: string;
4747
tags: string[];
4848
transfer: BalancerTransfer;
49-
type?: NodeBalancerType;
49+
type: NodeBalancerType;
5050
updated: string;
5151
}
5252

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/manager": Fixed
3+
---
4+
5+
NodeBalancer label and connection throttle not updating until page refresh ([#12217](https://github.com/linode/manager/pull/12217))

packages/manager/src/features/NodeBalancers/NodeBalancerDetail/NodeBalancerSummary/SummaryPanel.tsx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,26 +13,18 @@ import * as React from 'react';
1313

1414
import { Link } from 'src/components/Link';
1515
import { TagCell } from 'src/components/TagCell/TagCell';
16-
import {
17-
useIsLkeEnterpriseEnabled,
18-
useKubernetesBetaEndpoint,
19-
} from 'src/features/Kubernetes/kubeUtils';
16+
import { useKubernetesBetaEndpoint } from 'src/features/Kubernetes/kubeUtils';
2017
import { IPAddress } from 'src/features/Linodes/LinodesLanding/IPAddress';
2118
import { useIsResourceRestricted } from 'src/hooks/useIsResourceRestricted';
2219
import { useKubernetesClusterQuery } from 'src/queries/kubernetes';
2320

2421
export const SummaryPanel = () => {
2522
const { isUsingBetaEndpoint } = useKubernetesBetaEndpoint();
26-
const { isLkeEnterpriseLAFeatureEnabled } = useIsLkeEnterpriseEnabled();
2723

2824
const { id } = useParams({
2925
from: '/nodebalancers/$id/summary',
3026
});
31-
const { data: nodebalancer } = useNodeBalancerQuery(
32-
Number(id),
33-
Boolean(id),
34-
isLkeEnterpriseLAFeatureEnabled
35-
);
27+
const { data: nodebalancer } = useNodeBalancerQuery(Number(id), Boolean(id));
3628
const { data: configs } = useAllNodeBalancerConfigsQuery(Number(id));
3729
const { data: regions } = useRegionsQuery();
3830
const { data: attachedFirewallData } = useNodeBalancersFirewallsQuery(
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@linode/queries": Removed
3+
---
4+
5+
`isUsingBetaEndpoint` parameter from `useNodeBalancerQuery` ([#12217](https://github.com/linode/manager/pull/12217))
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1+
export * from './keys';
12
export * from './nodebalancers';
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
import {
2+
getNodeBalancer,
3+
getNodeBalancerFirewalls,
4+
getNodeBalancers,
5+
getNodeBalancerStats,
6+
} from '@linode/api-v4';
7+
import { createQueryKeys } from '@lukemorales/query-key-factory';
8+
9+
import {
10+
getAllNodeBalancerConfigs,
11+
getAllNodeBalancers,
12+
getAllNodeBalancerTypes,
13+
} from './requests';
14+
15+
import type { Filter, Params } from '@linode/api-v4';
16+
17+
export const nodebalancerQueries = createQueryKeys('nodebalancers', {
18+
nodebalancer: (id: number) => ({
19+
contextQueries: {
20+
configurations: {
21+
queryFn: () => getAllNodeBalancerConfigs(id),
22+
queryKey: null,
23+
},
24+
firewalls: {
25+
queryFn: () => getNodeBalancerFirewalls(id),
26+
queryKey: null,
27+
},
28+
stats: {
29+
queryFn: () => getNodeBalancerStats(id),
30+
queryKey: null,
31+
},
32+
},
33+
queryFn: () => getNodeBalancer(id),
34+
queryKey: [id],
35+
}),
36+
nodebalancers: {
37+
contextQueries: {
38+
all: {
39+
queryFn: getAllNodeBalancers,
40+
queryKey: null,
41+
},
42+
infinite: (filter: Filter = {}) => ({
43+
queryFn: ({ pageParam }) =>
44+
getNodeBalancers(
45+
{ page: pageParam as number, page_size: 25 },
46+
filter,
47+
),
48+
queryKey: [filter],
49+
}),
50+
paginated: (params: Params = {}, filter: Filter = {}) => ({
51+
queryFn: () => getNodeBalancers(params, filter),
52+
queryKey: [params, filter],
53+
}),
54+
},
55+
queryKey: null,
56+
},
57+
types: {
58+
queryFn: getAllNodeBalancerTypes,
59+
queryKey: null,
60+
},
61+
});

packages/queries/src/nodebalancers/nodebalancers.ts

Lines changed: 3 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,9 @@ import {
33
createNodeBalancerConfig,
44
deleteNodeBalancer,
55
deleteNodeBalancerConfig,
6-
getNodeBalancer,
7-
getNodeBalancerBeta,
8-
getNodeBalancerConfigs,
9-
getNodeBalancerFirewalls,
10-
getNodeBalancers,
11-
getNodeBalancerStats,
12-
getNodeBalancerTypes,
136
updateNodeBalancer,
147
updateNodeBalancerConfig,
158
} from '@linode/api-v4';
16-
import { getAll } from '@linode/utilities';
17-
import { createQueryKeys } from '@lukemorales/query-key-factory';
189
import {
1910
keepPreviousData,
2011
useInfiniteQuery,
@@ -26,6 +17,7 @@ import {
2617
import { queryPresets } from '../base';
2718
import { firewallQueries } from '../firewalls';
2819
import { profileQueries } from '../profile';
20+
import { nodebalancerQueries } from './keys';
2921

3022
import type { EventHandlerData } from '../eventHandlers';
3123
import type {
@@ -42,72 +34,6 @@ import type {
4234
ResourcePage,
4335
} from '@linode/api-v4';
4436

45-
const getAllNodeBalancerTypes = () =>
46-
getAll<PriceType>((params) => getNodeBalancerTypes(params))().then(
47-
(results) => results.data,
48-
);
49-
50-
export const getAllNodeBalancerConfigs = (id: number) =>
51-
getAll<NodeBalancerConfig>((params) =>
52-
getNodeBalancerConfigs(id, params),
53-
)().then((data) => data.data);
54-
55-
export const getAllNodeBalancers = () =>
56-
getAll<NodeBalancer>((params) => getNodeBalancers(params))().then(
57-
(data) => data.data,
58-
);
59-
60-
export const nodebalancerQueries = createQueryKeys('nodebalancers', {
61-
nodebalancer: (id: number) => ({
62-
contextQueries: {
63-
configurations: {
64-
queryFn: () => getAllNodeBalancerConfigs(id),
65-
queryKey: null,
66-
},
67-
firewalls: {
68-
queryFn: () => getNodeBalancerFirewalls(id),
69-
queryKey: null,
70-
},
71-
nodebalancer: (isUsingBetaEndpoint: boolean = false) => ({
72-
queryFn: () =>
73-
isUsingBetaEndpoint ? getNodeBalancerBeta(id) : getNodeBalancer(id),
74-
queryKey: [isUsingBetaEndpoint ? 'v4beta' : 'v4'],
75-
}),
76-
stats: {
77-
queryFn: () => getNodeBalancerStats(id),
78-
queryKey: null,
79-
},
80-
},
81-
queryFn: () => getNodeBalancer(id),
82-
queryKey: [id],
83-
}),
84-
nodebalancers: {
85-
contextQueries: {
86-
all: {
87-
queryFn: getAllNodeBalancers,
88-
queryKey: null,
89-
},
90-
infinite: (filter: Filter = {}) => ({
91-
queryFn: ({ pageParam }) =>
92-
getNodeBalancers(
93-
{ page: pageParam as number, page_size: 25 },
94-
filter,
95-
),
96-
queryKey: [filter],
97-
}),
98-
paginated: (params: Params = {}, filter: Filter = {}) => ({
99-
queryFn: () => getNodeBalancers(params, filter),
100-
queryKey: [params, filter],
101-
}),
102-
},
103-
queryKey: null,
104-
},
105-
types: {
106-
queryFn: getAllNodeBalancerTypes,
107-
queryKey: null,
108-
},
109-
});
110-
11137
export const useNodeBalancerStatsQuery = (id: number) => {
11238
return useQuery<NodeBalancerStats, APIError[]>({
11339
...nodebalancerQueries.nodebalancer(id)._ctx.stats,
@@ -122,15 +48,9 @@ export const useNodeBalancersQuery = (params: Params, filter: Filter) =>
12248
placeholderData: keepPreviousData,
12349
});
12450

125-
export const useNodeBalancerQuery = (
126-
id: number,
127-
enabled = true,
128-
isUsingBetaEndpoint = false,
129-
) => {
51+
export const useNodeBalancerQuery = (id: number, enabled = true) => {
13052
return useQuery<NodeBalancer, APIError[]>({
131-
...nodebalancerQueries
132-
.nodebalancer(id)
133-
._ctx.nodebalancer(isUsingBetaEndpoint),
53+
...nodebalancerQueries.nodebalancer(id),
13454
enabled,
13555
});
13656
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import {
2+
getNodeBalancerConfigs,
3+
getNodeBalancers,
4+
getNodeBalancerTypes,
5+
} from '@linode/api-v4';
6+
import { getAll } from '@linode/utilities';
7+
8+
import type {
9+
NodeBalancer,
10+
NodeBalancerConfig,
11+
PriceType,
12+
} from '@linode/api-v4';
13+
14+
export const getAllNodeBalancerTypes = () =>
15+
getAll<PriceType>((params) => getNodeBalancerTypes(params))().then(
16+
(results) => results.data,
17+
);
18+
19+
export const getAllNodeBalancerConfigs = (id: number) =>
20+
getAll<NodeBalancerConfig>((params) =>
21+
getNodeBalancerConfigs(id, params),
22+
)().then((data) => data.data);
23+
24+
export const getAllNodeBalancers = () =>
25+
getAll<NodeBalancer>((params) => getNodeBalancers(params))().then(
26+
(data) => data.data,
27+
);

packages/utilities/src/factories/nodebalancer.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type {
66
NodeBalancerConfig,
77
NodeBalancerConfigNode,
88
NodeBalancerStats,
9-
} from '@linode/api-v4/lib/nodebalancers/types';
9+
} from '@linode/api-v4';
1010

1111
export const nodeBalancerFactory = Factory.Sync.makeFactory<NodeBalancer>({
1212
client_conn_throttle: 0,
@@ -24,6 +24,8 @@ export const nodeBalancerFactory = Factory.Sync.makeFactory<NodeBalancer>({
2424
total: 0,
2525
},
2626
updated: '2019-12-13T00:00:00',
27+
lke_cluster: null,
28+
type: 'common',
2729
});
2830

2931
export const nodeBalancerConfigFactory =

0 commit comments

Comments
 (0)