blob: 4188b2a3b4c6c01aa1b64e7d534000cb361ee4c1 [file] [log] [blame]
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { ConfigurationService } from '../shared/configuration.service';
import { HelperService } from '../../shared/helper.service';
@Component({
selector: 'hi-config-detail',
templateUrl: './config-detail.component.html',
styleUrls: ['./config-detail.component.scss'],
providers: [ConfigurationService],
})
export class ConfigDetailComponent implements OnInit {
isLoading = true;
obj: any = {};
clusterName: string;
instanceName: string;
resourceName: string;
can = false;
constructor(
protected route: ActivatedRoute,
protected service: ConfigurationService,
protected helper: HelperService
) {}
ngOnInit() {
if (this.route.parent) {
this.clusterName =
this.route.parent.snapshot.params.name ||
this.route.parent.snapshot.params.cluster_name;
this.instanceName = this.route.parent.snapshot.params.instance_name;
this.resourceName = this.route.parent.snapshot.params.resource_name;
}
this.loadConfig();
this.service.can().subscribe((data) => (this.can = data));
}
loadConfig() {
let observer: any;
if (this.clusterName && this.instanceName) {
observer = this.service.getInstanceConfig(
this.clusterName,
this.instanceName
);
} else if (this.clusterName && this.resourceName) {
observer = this.service.getResourceConfig(
this.clusterName,
this.resourceName
);
} else {
observer = this.service.getClusterConfig(this.clusterName);
}
if (observer) {
this.isLoading = true;
observer.subscribe(
(config) => (this.obj = config),
(error) => {
// since rest API simply throws 404 instead of empty config when config is not initialized yet
// frontend has to treat 404 as normal result
if (error != 'Not Found') {
this.helper.showError(error);
}
this.isLoading = false;
},
() => (this.isLoading = false)
);
}
}
updateConfig(value: any) {
let observer: any;
if (this.clusterName && this.instanceName) {
observer = this.service.setInstanceConfig(
this.clusterName,
this.instanceName,
value
);
} else if (this.clusterName && this.resourceName) {
observer = this.service.setResourceConfig(
this.clusterName,
this.resourceName,
value
);
} else {
observer = this.service.setClusterConfig(this.clusterName, value);
}
if (observer) {
this.isLoading = true;
observer.subscribe(
() => {
this.helper.showSnackBar('Configuration updated!');
this.loadConfig();
},
(error) => this.helper.showError(error),
() => (this.isLoading = false)
);
}
}
deleteConfig(value: any) {
let observer: any;
if (this.clusterName && this.instanceName) {
observer = this.service.deleteInstanceConfig(
this.clusterName,
this.instanceName,
value
);
} else if (this.clusterName && this.resourceName) {
observer = this.service.deleteResourceConfig(
this.clusterName,
this.resourceName,
value
);
} else {
observer = this.service.deleteClusterConfig(this.clusterName, value);
}
if (observer) {
this.isLoading = true;
observer.subscribe(
() => {
this.helper.showSnackBar('Configuration deleted!');
this.loadConfig();
},
(error) => this.helper.showError(error),
() => (this.isLoading = false)
);
}
}
}