diff --git a/core/ui/public/i18n/en/translation.json b/core/ui/public/i18n/en/translation.json index 06e3c48af3..6f9e6aaead 100644 --- a/core/ui/public/i18n/en/translation.json +++ b/core/ui/public/i18n/en/translation.json @@ -942,6 +942,8 @@ "loki_instance_title": "Multiple Loki instance", "loki_instance_description": "Logs are stored in more than one Loki instance. Choose one in the field below.", "loki_tooltip": "Search logs from the active Loki instance, from a former leader node or from a Loki backup.", + "cannot_retrieve_loki_instances": "Cannot retrieve loki instances", + "cannot_configure_forwarder": "Cannot configure forwarder", "loki": { "title": "Loki", "tooltip": "Cluster nodes transmit their log streams to the active Loki instance, which operates on the leader node. When a leader node is replaced, the previous leader node retains its inactive Loki instance, allowing the System logs page to search through it until it is uninstalled.", diff --git a/core/ui/src/components/settings/CloudLogManagerConfigureModal.vue b/core/ui/src/components/settings/CloudLogManagerConfigureModal.vue index 34c039fed3..296c74ae67 100644 --- a/core/ui/src/components/settings/CloudLogManagerConfigureModal.vue +++ b/core/ui/src/components/settings/CloudLogManagerConfigureModal.vue @@ -29,11 +29,13 @@ v-if="toggleEnabled" :label="$t('cloud_log_manager_forwarder.address')" v-model="address" + :invalid-message="error.address" /> @@ -156,6 +165,11 @@ export default { loading: { setCloudLogManager: false, }, + error: { + address: "", + tenant: "", + setCloudLogManager: "", + }, calOptions: { dateFormat: "Y-m-d", }, @@ -213,8 +227,28 @@ export default { this.date = this.formatDate(new Date(), "yyyy-MM-dd"); this.time = "00:00"; }, + validateCloudLogManagerInput() { + this.clearErrors(this); + let isValidationOk = true; + + if (!this.address) { + this.error.address = this.$t("common.required"); + isValidationOk = false; + } + if (!this.tenant) { + this.error.tenant = this.$t("common.required"); + isValidationOk = false; + } + + return isValidationOk; + }, async setCloudLogManager() { + if (!this.validateCloudLogManagerInput()) { + return; + } + this.loading.setCloudLogManager = true; + this.error.setCloudLogManager = ""; const taskAction = "set-clm-forwarder"; // register to task abortion @@ -256,11 +290,13 @@ export default { if (err) { console.error(`error creating task ${taskAction}`, err); + this.error.setCloudLogManager = this.getErrorMessage(err); return; } }, setCloudLogManagerAborted(taskResult, taskContext) { console.error(`${taskContext.action} aborted`, taskResult); + this.error.setCloudLogManager = this.$t("error.generic_error"); this.loading.setCloudLogManager = false; }, setCloudLogManagerCompleted() { diff --git a/core/ui/src/components/settings/LokiCard.vue b/core/ui/src/components/settings/LokiCard.vue index c5c59b3cfe..e7b17f9365 100644 --- a/core/ui/src/components/settings/LokiCard.vue +++ b/core/ui/src/components/settings/LokiCard.vue @@ -150,12 +150,12 @@ export default { computed: { activeFromFormatted() { return this.activeFrom - ? this.formatDate(new Date(this.activeFrom), "dd/MM/yyyy") + ? this.formatDate(new Date(this.activeFrom), "P") : ""; }, activeToFormatted() { return this.activeTo - ? this.formatDate(new Date(this.activeTo), "dd/MM/yyyy") + ? this.formatDate(new Date(this.activeTo), "P") : ""; }, activeText() { diff --git a/core/ui/src/components/settings/SyslogConfigureModal.vue b/core/ui/src/components/settings/SyslogConfigureModal.vue index a817f2a9d2..e4aaa6c64c 100644 --- a/core/ui/src/components/settings/SyslogConfigureModal.vue +++ b/core/ui/src/components/settings/SyslogConfigureModal.vue @@ -28,11 +28,13 @@ v-if="toggleEnabled" :label="$t('syslog_forwarder.hostname_ip_address')" v-model="address" + :invalid-message="error.address" />