k8s.ts 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import type { V1Secret } from '@kubernetes/client-node';
  2. import type { K8sClient } from '$lib/server/k8s';
  3. import { K8sResource } from '$lib/server/resources/k8s';
  4. import type { ResourceEvent } from '$lib/types/events';
  5. import type { CoreResources } from '$lib/types/workspace';
  6. import type { SecretResources } from '.';
  7. class K8sSecretResourceImpl extends K8sResource<V1Secret> {
  8. constructor(k8sClient: K8sClient, namespace: string) {
  9. super(
  10. k8sClient,
  11. namespace,
  12. {
  13. group: '',
  14. version: 'v1',
  15. namespace,
  16. resource: 'secrets',
  17. },
  18. [],
  19. );
  20. }
  21. }
  22. class K8sSecretResources implements SecretResources {
  23. #secretResources: K8sSecretResourceImpl;
  24. constructor(k8sClient: K8sClient, namespace: string) {
  25. this.#secretResources = new K8sSecretResourceImpl(k8sClient, namespace);
  26. }
  27. subscribe(handler: (event: ResourceEvent) => void): () => void {
  28. return this.#secretResources.subscribe(handler);
  29. }
  30. async getSecrets(): Promise<V1Secret[]> {
  31. return this.#secretResources.getResources();
  32. }
  33. async getSecretResources(secretId: string): Promise<CoreResources> {
  34. return this.#secretResources.getCoreResources(secretId);
  35. }
  36. async getSecretStatus(secretId: string): Promise<undefined> {
  37. return undefined;
  38. }
  39. async applySecret(cr: V1Secret): Promise<void> {
  40. await this.#secretResources.apply(cr);
  41. }
  42. async deleteSecret(id: string): Promise<void> {
  43. await this.#secretResources.remove(id);
  44. }
  45. }
  46. export { K8sSecretResources };