Skip to content

Commit 48eb00c

Browse files
committed
Add Metalk8sLocalVolumeProvider implementation and tests
1 parent cde9b93 commit 48eb00c

File tree

4 files changed

+17
-15
lines changed

4 files changed

+17
-15
lines changed

ui/public/.well-known/micro-app-configuration

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,9 @@
3131
"platform_library": {
3232
"module": "./platformLibrary",
3333
"scope": "metalk8s"
34-
}
35-
},
36-
"providers": {
37-
"K8SLocalVolumeProvider": {
38-
"module": "./K8SLocalVolumeProvider",
34+
},
35+
"Metalk8sLocalVolumeProvider": {
36+
"module": "./Metalk8sLocalVolumeProvider",
3937
"scope": "metalk8s"
4038
}
4139
},

ui/rspack.config.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ const config: Configuration = {
117117
'./platformLibrary': './src/services/platformlibrary/k8s.ts',
118118
'./AlertsNavbarUpdater':
119119
'./src/components/AlertNavbarUpdaterComponent.tsx',
120-
'./K8SLocalVolumeProvider':
121-
'./src/services/k8s/K8SLocalVolumeProvider.ts',
120+
'./Metalk8sLocalVolumeProvider':
121+
'./src/services/k8s/Metalk8sLocalVolumeProvider.ts',
122122
},
123123
remotes: !isProduction
124124
? {

ui/src/services/k8s/K8SLocalVolumeProvider.test.ts renamed to ui/src/services/k8s/Metalk8sLocalVolumeProvider.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { CoreV1Api, CustomObjectsApi } from '@kubernetes/client-node';
2-
import K8SLocalVolumeProvider from './K8SLocalVolumeProvider';
2+
import Metalk8sLocalVolumeProvider from './Metalk8sLocalVolumeProvider';
33
import { Metalk8sV1alpha1VolumeClient } from './Metalk8sVolumeClient.generated';
4-
import { updateApiServerConfig } from '../k8s/api';
4+
import { updateApiServerConfig } from './api';
55

66
jest.mock('../k8s/api', () => ({
77
updateApiServerConfig: jest.fn(),
88
}));
99

1010
describe('K8SLocalVolumeProvider', () => {
11-
let provider: K8SLocalVolumeProvider;
11+
let provider: Metalk8sLocalVolumeProvider;
1212
const mockUrl = 'mock-url';
1313
const mockToken = 'mock-token';
1414

@@ -31,7 +31,7 @@ describe('K8SLocalVolumeProvider', () => {
3131
customObjects: mockCustomObjectsApi,
3232
});
3333

34-
provider = new K8SLocalVolumeProvider(mockUrl, mockToken);
34+
provider = new Metalk8sLocalVolumeProvider(mockUrl, mockToken);
3535
provider.k8sClient = mockCoreV1Api;
3636
provider.volumeClient = mockVolumeClient;
3737
});
@@ -101,7 +101,7 @@ describe('K8SLocalVolumeProvider', () => {
101101
).rejects.toThrow('Failed to find IP for node non-existent-node');
102102
});
103103

104-
it('should raise an error if volume recovery fails', async () => {
104+
it('should raise an error if volume retrieval fails', async () => {
105105
(mockCoreV1Api.listNode as jest.Mock).mockResolvedValue({
106106
body: {
107107
items: [

ui/src/services/k8s/K8SLocalVolumeProvider.ts renamed to ui/src/services/k8s/Metalk8sLocalVolumeProvider.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { CoreV1Api, V1PersistentVolume } from '@kubernetes/client-node';
2-
import * as ApiK8s from '../k8s/api';
2+
import * as ApiK8s from './api';
33
import {
44
Metalk8sV1alpha1VolumeClient,
55
Result,
@@ -12,15 +12,18 @@ function isError<T>(result: Result<T>): result is { error: any } {
1212
type LocalPersistentVolume = V1PersistentVolume & {
1313
IP: string;
1414
devicePath: string;
15+
nodeName: string;
1516
};
1617

17-
export interface K8SLocalVolumeAdapter {
18+
export interface Metalk8sLocalVolumeAdapter {
1819
listLocalPersistentVolumes(
1920
serverName: string,
2021
): Promise<LocalPersistentVolume[]>;
2122
}
2223

23-
export default class K8SLocalVolumeProvider implements K8SLocalVolumeAdapter {
24+
export default class Metalk8sLocalVolumeProvider
25+
implements Metalk8sLocalVolumeAdapter
26+
{
2427
volumeClient: Metalk8sV1alpha1VolumeClient;
2528
k8sClient: CoreV1Api;
2629
constructor(private url: string, private token: string) {
@@ -60,6 +63,7 @@ export default class K8SLocalVolumeProvider implements K8SLocalVolumeAdapter {
6063
...isLocalPv,
6164
IP: nodeIP.address,
6265
devicePath: item.spec?.rawBlockDevice?.devicePath,
66+
nodeName: item.spec.nodeName,
6367
},
6468
];
6569
},

0 commit comments

Comments
 (0)