import request, { RequestPromiseOptions } from "request-promise-native"; import { Cluster } from "../cluster"; export type ClusterDetectionResult = { value: string | number | boolean accuracy: number }; export class BaseClusterDetector { cluster: Cluster; key: string; constructor(cluster: Cluster) { this.cluster = cluster; } detect(): Promise { return null; } protected async k8sRequest(path: string, options: RequestPromiseOptions = {}): Promise { const apiUrl = this.cluster.kubeProxyUrl + path; return request(apiUrl, { json: true, timeout: 30000, ...options, headers: { Host: `${this.cluster.id}.${new URL(this.cluster.kubeProxyUrl).host}`, // required in ClusterManager.getClusterForRequest() ...(options.headers || {}), }, }); } }