text: import axios from '../../lib/utils/axios_utils';
  
  export default class ClusterService {
    constructor(options = {}) {
      this.options = options;
      this.appInstallEndpointMap = {
        helm: this.options.installHelmEndpoint,
        ingress: this.options.installIngressEndpoint,
        cert_manager: this.options.installCertManagerEndpoint,
        crossplane: this.options.installCrossplaneEndpoint,
        runner: this.options.installRunnerEndpoint,
        prometheus: this.options.installPrometheusEndpoint,
        jupyter: this.options.installJupyterEndpoint,
        knative: this.options.installKnativeEndpoint,
        elastic_stack: this.options.installElasticStackEndpoint,
      };
      this.appUpdateEndpointMap = {
        knative: this.options.updateKnativeEndpoint,
      };
    }
  
    fetchClusterStatus() {
      return axios.get(this.options.endpoint);
    }
  
    installApplication(appId, params) {
      return axios.post(this.appInstallEndpointMap[appId], params);
    }
  
    updateApplication(appId, params) {
      return axios.patch(this.appUpdateEndpointMap[appId], params);
    }
  
    uninstallApplication(appId, params) {
      return axios.delete(this.appInstallEndpointMap[appId], params);
    }
  
    fetchClusterEnvironments() {
      return axios.get(this.options.clusterEnvironmentsEndpoint);
    }
  
    static updateCluster(endpoint, data) {
      return axios.put(endpoint, data);
    }
  }
  