});
});
- it('should update the Telemetry configuration', () => {
- component.updateConfig();
- const req = httpTesting.expectOne('api/mgr/module/telemetry');
- expect(req.request.method).toBe('PUT');
- expect(req.request.body).toEqual({
- config: {}
- });
- req.flush({});
- });
-
it('should disable the Telemetry module', () => {
const message = 'Module disabled message.';
const followUpFunc = function () {
});
});
- it('should submit', () => {
+ it('should submit ', () => {
component.onSubmit();
- const req = httpTesting.expectOne('api/telemetry');
- expect(req.request.method).toBe('PUT');
- expect(req.request.body).toEqual({
+ const req1 = httpTesting.expectOne('api/telemetry');
+ expect(req1.request.method).toBe('PUT');
+ expect(req1.request.body).toEqual({
enable: true,
license_name: 'sharing-1-0'
});
- req.flush({});
- expect(router.navigate).toHaveBeenCalledWith(['']);
+ req1.flush({});
+ const req2 = httpTesting.expectOne({
+ url: 'api/mgr/module/telemetry',
+ method: 'PUT'
+ });
+ expect(req2.request.body).toEqual({
+ config: {}
+ });
+ req2.flush({});
+ expect(router.url).toBe('/');
});
});
});
licenseAgrmt = false;
moduleEnabled: boolean;
options: Object = {};
+ updatedConfig: Object = {};
previewForm: CdFormGroup;
requiredFields = [
'channel_basic',
return result;
}
+ private updateChannelsInReport(updatedConfig: Object = {}) {
+ const channels: string[] = this.report['report']['channels'];
+ const availableChannels: string[] = this.report['report']['channels_available'];
+ const updatedChannels = [];
+ for (const channel of availableChannels) {
+ const key = `channel_${channel}`;
+ // channel unchanged or toggled on
+ if (
+ (!updatedConfig.hasOwnProperty(key) && channels.includes(channel)) ||
+ updatedConfig[key]
+ ) {
+ updatedChannels.push(channel);
+ }
+ }
+ this.report['report']['channels'] = updatedChannels;
+ }
+
private getReport() {
this.loadingStart();
(resp: object) => {
this.report = resp;
this.reportId = resp['report']['report_id'];
+ this.updateChannelsInReport(this.updatedConfig);
this.createPreviewForm();
this.loadingReady();
this.step++;
}
updateConfig() {
- const config = {};
- _.forEach(Object.values(this.options), (option) => {
+ this.updatedConfig = {};
+ for (const option of Object.values(this.options)) {
const control = this.configForm.get(option.name);
+ if (!control.valid) {
+ this.configForm.setErrors({ cdSubmitButton: true });
+ return;
+ }
// Append the option only if the value has been modified.
if (control.dirty && control.valid) {
- config[option.name] = control.value;
- }
- });
- this.mgrModuleService.updateConfig('telemetry', config).subscribe(
- () => {
- this.disableModule(
- $localize`Your settings have been applied successfully. \
- Due to privacy/legal reasons the Telemetry module is now disabled until you \
- complete the next step and accept the license.`,
- () => {
- this.getReport();
- }
- );
- },
- () => {
- // Reset the 'Submit' button.
- this.configForm.setErrors({ cdSubmitButton: true });
+ this.updatedConfig[option.name] = control.value;
}
- );
+ }
+ this.getReport();
}
disableModule(message: string = null, followUpFunc: Function = null) {
}
onSubmit() {
- this.telemetryService.enable().subscribe(() => {
- this.telemetryNotificationService.setVisibility(false);
- this.notificationService.show(
- NotificationType.success,
- $localize`The Telemetry module has been configured and activated successfully.`
- );
- this.router.navigate(['']);
- });
+ const observables = [
+ this.telemetryService.enable(),
+ this.mgrModuleService.updateConfig('telemetry', this.updatedConfig)
+ ];
+
+ observableForkJoin(observables).subscribe(
+ () => {
+ this.telemetryNotificationService.setVisibility(false);
+ this.notificationService.show(
+ NotificationType.success,
+ $localize`The Telemetry module has been configured and activated successfully.`
+ );
+ },
+ () => {
+ this.telemetryNotificationService.setVisibility(false);
+ this.notificationService.show(
+ NotificationType.error,
+ $localize`An Error occurred while updating the Telemetry module configuration.\
+ Please Try again`
+ );
+ // Reset the 'Update' button.
+ this.previewForm.setErrors({ cdSubmitButton: true });
+ },
+ () => {
+ this.updatedConfig = {};
+ this.router.navigate(['']);
+ }
+ );
}
}