Skip to content

Commit d0cad1d

Browse files
committed
Refactor monitoring store to only have state
Introduced a monitoringClient
1 parent 4f34440 commit d0cad1d

17 files changed

+184
-235
lines changed

src/Frontend/src/components/BackendChecksNotifications.vue

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,16 @@ import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndSt
99
import useEnvironmentAndVersionsAutoRefresh from "@/composables/useEnvironmentAndVersionsAutoRefresh";
1010
import { useServiceControlStore } from "@/stores/ServiceControlStore";
1111
import { storeToRefs } from "pinia";
12-
import { useMonitoringStore } from "@/stores/MonitoringStore";
12+
import monitoringClient from "./monitoring/monitoringClient";
1313
1414
const router = useRouter();
15-
1615
const { store: connectionStore } = useConnectionsAndStatsAutoRefresh();
1716
const connectionState = connectionStore.connectionState;
1817
const monitoringConnectionState = connectionStore.monitoringConnectionState;
1918
const { store: environmentStore } = useEnvironmentAndVersionsAutoRefresh();
2019
const environment = environmentStore.environment;
2120
const serviceControlStore = useServiceControlStore();
22-
const monitoringStore = useMonitoringStore();
2321
const { serviceControlUrl } = storeToRefs(serviceControlStore);
24-
const { monitoringUrl, isMonitoringDisabled } = storeToRefs(monitoringStore);
25-
2622
const primaryConnectionFailure = computed(() => connectionState.unableToConnect);
2723
const monitoringConnectionFailure = computed(() => monitoringConnectionState.unableToConnect);
2824
@@ -40,17 +36,17 @@ watch(primaryConnectionFailure, (newValue, oldValue) => {
4036
4137
watch(monitoringConnectionFailure, (newValue, oldValue) => {
4238
// Only watch the state change if monitoring is enabled
43-
if (isMonitoringDisabled.value) {
39+
if (monitoringClient.isMonitoringDisabled) {
4440
return;
4541
}
4642
4743
//NOTE to eliminate success msg showing everytime the screen is refreshed
4844
if (newValue !== oldValue && !(oldValue === null && newValue === false)) {
4945
const connectionUrl = router.resolve(routeLinks.configuration.connections.link).href;
5046
if (newValue) {
51-
useShowToast(TYPE.ERROR, "Error", `Could not connect to the ServiceControl Monitoring service at ${monitoringUrl.value}. <a class="btn btn-default" href="${connectionUrl}">View connection settings</a>`);
47+
useShowToast(TYPE.ERROR, "Error", `Could not connect to the ServiceControl Monitoring service at ${monitoringClient.url}. <a class="btn btn-default" href="${connectionUrl}">View connection settings</a>`);
5248
} else {
53-
useShowToast(TYPE.SUCCESS, "Success", `Connection to ServiceControl Monitoring service was successful at ${monitoringUrl.value}.`);
49+
useShowToast(TYPE.SUCCESS, "Success", `Connection to ServiceControl Monitoring service was successful at ${monitoringClient.url}.`);
5450
}
5551
}
5652
});

src/Frontend/src/components/PageFooter.vue

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { useServiceControlStore } from "@/stores/ServiceControlStore";
1010
import { storeToRefs } from "pinia";
1111
import { useConfigurationStore } from "@/stores/ConfigurationStore";
1212
import { useLicenseStore } from "@/stores/LicenseStore";
13-
import { useMonitoringStore } from "@/stores/MonitoringStore";
13+
import monitoringClient from "./monitoring/monitoringClient";
1414
1515
const { store: connectionStore } = useConnectionsAndStatsAutoRefresh();
1616
const connectionState = connectionStore.connectionState;
@@ -19,22 +19,17 @@ const { store: environmentAndVersionsStore } = useEnvironmentAndVersionsAutoRefr
1919
const newVersions = environmentAndVersionsStore.newVersions;
2020
const environment = environmentAndVersionsStore.environment;
2121
const serviceControlStore = useServiceControlStore();
22-
const monitoringStore = useMonitoringStore();
2322
const { serviceControlUrl } = storeToRefs(serviceControlStore);
24-
const { monitoringUrl } = storeToRefs(monitoringStore);
2523
const licenseStore = useLicenseStore();
2624
const { licenseStatus, license } = licenseStore;
27-
28-
const isMonitoringEnabled = computed(() => {
29-
return monitoringUrl.value !== "!" && monitoringUrl.value !== "" && monitoringUrl.value !== null && monitoringUrl.value !== undefined;
30-
});
25+
const isMonitoringEnabled = monitoringClient.isMonitoringEnabled;
3126
3227
const scAddressTooltip = computed(() => {
3328
return `ServiceControl URL ${serviceControlUrl.value}`;
3429
});
3530
3631
const scMonitoringAddressTooltip = computed(() => {
37-
return `Monitoring URL ${monitoringUrl.value}`;
32+
return `Monitoring URL ${monitoringClient.url}`;
3833
});
3934
4035
const configurationStore = useConfigurationStore();

src/Frontend/src/components/PageHeader.vue

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,15 @@ import DashboardMenuItem from "@/components/dashboard/DashboardMenuItem.vue";
1212
import FeedbackButton from "@/components/FeedbackButton.vue";
1313
import ThroughputMenuItem from "@/views/throughputreport/ThroughputMenuItem.vue";
1414
import AuditMenuItem from "./audit/AuditMenuItem.vue";
15-
import { useMonitoringStore } from "@/stores/MonitoringStore";
16-
import { storeToRefs } from "pinia";
15+
import monitoringClient from "@/components/monitoring/monitoringClient";
1716
18-
const monitoringStore = useMonitoringStore();
19-
const { isMonitoringEnabled } = storeToRefs(monitoringStore);
17+
const isMonitoringEnabled = monitoringClient.isMonitoringEnabled;
2018
// prettier-ignore
2119
const menuItems = computed(
2220
() => [
2321
DashboardMenuItem,
2422
HeartbeatsMenuItem,
25-
...(isMonitoringEnabled.value ? [MonitoringMenuItem] : []),
23+
...(isMonitoringEnabled ? [MonitoringMenuItem] : []),
2624
AuditMenuItem,
2725
FailedMessagesMenuItem,
2826
CustomChecksMenuItem,

src/Frontend/src/components/configuration/EndpointConnection.vue

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,23 +6,15 @@ import CodeEditor from "@/components/CodeEditor.vue";
66
import { useServiceControlStore } from "@/stores/ServiceControlStore";
77
import { storeToRefs } from "pinia";
88
import LoadingSpinner from "../LoadingSpinner.vue";
9-
import { useMonitoringStore } from "@/stores/MonitoringStore";
9+
import monitoringClient, { MetricsConnectionDetails } from "../monitoring/monitoringClient";
1010
1111
interface ServiceControlInstanceConnection {
1212
settings: { [key: string]: object };
1313
errors: string[];
1414
}
1515
16-
interface MetricsConnectionDetails {
17-
Enabled: boolean;
18-
MetricsQueue?: string;
19-
Interval?: string;
20-
}
21-
2216
const serviceControlStore = useServiceControlStore();
23-
const monitoringStore = useMonitoringStore();
2417
const { serviceControlUrl } = storeToRefs(serviceControlStore);
25-
const { monitoringUrl } = storeToRefs(monitoringStore);
2618
2719
const loading = ref(true);
2820
const showCodeOnlyTab = ref(true);
@@ -79,7 +71,7 @@ function switchJsonTab() {
7971
8072
async function serviceControlConnections() {
8173
const scConnectionResult = getServiceControlConnection();
82-
const monitoringConnectionResult = getMonitoringConnection();
74+
const monitoringConnectionResult = monitoringClient.getMonitoringConnection();
8375
8476
const [scConnection, mConnection] = await Promise.all([scConnectionResult, monitoringConnectionResult]);
8577
return {
@@ -102,15 +94,6 @@ async function getServiceControlConnection() {
10294
return { errors: [`Error reaching ServiceControl at ${serviceControlUrl.value} connection`] } as ServiceControlInstanceConnection;
10395
}
10496
}
105-
106-
async function getMonitoringConnection() {
107-
try {
108-
const [, data] = await monitoringStore.fetchTypedFromMonitoring<{ Metrics: MetricsConnectionDetails }>("connection");
109-
return { ...data, errors: [] };
110-
} catch {
111-
return { Metrics: null, errors: [`Error SC Monitoring instance at ${monitoringUrl.value}connection`] };
112-
}
113-
}
11497
</script>
11598

11699
<template>

src/Frontend/src/components/configuration/PlatformConnections.vue

Lines changed: 7 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,22 @@ import { faCheck, faExclamationTriangle } from "@fortawesome/free-solid-svg-icon
44
import FAIcon from "@/components/FAIcon.vue";
55
import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh";
66
import { useServiceControlStore } from "@/stores/ServiceControlStore";
7-
import { storeToRefs } from "pinia";
8-
import { useMonitoringStore } from "@/stores/MonitoringStore";
7+
import monitoringClient from "../monitoring/monitoringClient";
98
109
const { store: connectionStore } = useConnectionsAndStatsAutoRefresh();
1110
const connectionState = connectionStore.connectionState;
1211
const monitoringConnectionState = connectionStore.monitoringConnectionState;
1312
1413
const serviceControlStore = useServiceControlStore();
15-
const monitoringStore = useMonitoringStore();
1614
serviceControlStore.refresh();
17-
monitoringStore.refresh();
1815
const localServiceControlUrl = ref(serviceControlStore.serviceControlUrl);
19-
const localMonitoringUrl = ref(monitoringStore.monitoringUrl);
20-
const { isMonitoringDisabled } = storeToRefs(monitoringStore);
21-
16+
const localMonitoringUrl = ref(monitoringClient.url);
17+
const isMonitoringDisabled = monitoringClient.isMonitoringDisabled;
2218
const testingServiceControl = ref(false);
2319
const serviceControlValid = ref<boolean | null>(null);
2420
2521
const testingMonitoring = ref(false);
2622
const monitoringValid = ref<boolean | null>(null);
27-
2823
const connectionSaved = ref<boolean | null>(null);
2924
3025
async function testServiceControlUrl() {
@@ -82,13 +77,10 @@ function updateServiceControlUrls() {
8277
localMonitoringUrl.value += "/";
8378
}
8479
85-
//values have changed. They'll be reset after page reloads
86-
window.localStorage.removeItem("scu");
87-
window.localStorage.removeItem("mu");
88-
89-
const newSearch = `?scu=${localServiceControlUrl.value}&mu=${localMonitoringUrl.value}`;
90-
console.debug("updateConnections - new query string: ", newSearch);
91-
window.location.search = newSearch;
80+
const params = new URLSearchParams();
81+
params.set("scu", localServiceControlUrl.value);
82+
params.set("mu", localMonitoringUrl.value);
83+
window.location.search = `?${params.toString()}`;
9284
}
9385
</script>
9486

src/Frontend/src/components/monitoring/EndpointDetails.vue

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { useMonitoringHistoryPeriodStore } from "@/stores/MonitoringHistoryPerio
2020
import routeLinks from "@/router/routeLinks";
2121
import FAIcon from "@/components/FAIcon.vue";
2222
import { faEnvelope } from "@fortawesome/free-solid-svg-icons";
23-
import { useMonitoringStore } from "@/stores/MonitoringStore";
23+
import monitoringClient from "./monitoringClient";
2424
2525
const { store: connectionStore } = useConnectionsAndStatsAutoRefresh();
2626
const monitoringConnectionState = connectionStore.monitoringConnectionState;
@@ -32,8 +32,7 @@ let refreshInterval: number;
3232
3333
const monitoringEndpointDetailsStore = useMonitoringEndpointDetailsStore();
3434
const monitoringHistoryPeriodStore = useMonitoringHistoryPeriodStore();
35-
const monitoringStore = useMonitoringStore();
36-
const { isMonitoringDisabled } = storeToRefs(monitoringStore);
35+
const isMonitoringDisabled = monitoringClient.isMonitoringDisabled;
3736
3837
const { historyPeriod } = storeToRefs(monitoringHistoryPeriodStore);
3938
const { negativeCriticalTimeIsPresent, endpointDetails: endpoint } = storeToRefs(monitoringEndpointDetailsStore);

src/Frontend/src/components/monitoring/EndpointInstances.vue

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,16 @@ import ColumnHeader from "@/components/ColumnHeader.vue";
1212
import { CriticalTime, InstanceName, ProcessingTime, ScheduledRetries, Throughput } from "@/resources/MonitoringResources";
1313
import FAIcon from "@/components/FAIcon.vue";
1414
import { faEnvelope, faTrash } from "@fortawesome/free-solid-svg-icons";
15-
import { useMonitoringStore } from "@/stores/MonitoringStore";
15+
import monitoringClient from "./monitoringClient";
1616
1717
const isRemovingEndpointEnabled = ref<boolean>(false);
1818
const router = useRouter();
19-
2019
const monitoringEndpointDetailsStore = useMonitoringEndpointDetailsStore();
2120
const { endpointDetails: endpoint, endpointName } = storeToRefs(monitoringEndpointDetailsStore);
2221
23-
const monitoringStore = useMonitoringStore();
24-
2522
async function removeEndpoint(endpointName: string, instance: ExtendedEndpointInstance) {
2623
try {
27-
await monitoringStore.deleteFromMonitoring("monitored-instance/" + endpointName + "/" + instance.id);
24+
await monitoringClient.deletedMonitoredEndpoint(endpointName, instance.id);
2825
endpoint.value.instances.splice(endpoint.value.instances.indexOf(instance), 1);
2926
if (endpoint.value.instances.length === 0) {
3027
router.push(routeLinks.monitoring.root);
@@ -35,25 +32,8 @@ async function removeEndpoint(endpointName: string, instance: ExtendedEndpointIn
3532
}
3633
}
3734
38-
async function getIsRemovingEndpointEnabled() {
39-
try {
40-
const response = await monitoringStore.optionsFromMonitoring();
41-
if (response) {
42-
const headers = response.headers;
43-
const allow = headers.get("Allow");
44-
if (allow) {
45-
const deleteAllowed = allow.indexOf("DELETE") >= 0;
46-
return deleteAllowed;
47-
}
48-
}
49-
} catch (err) {
50-
console.log(err);
51-
}
52-
return false;
53-
}
54-
5535
onMounted(async () => {
56-
isRemovingEndpointEnabled.value = await getIsRemovingEndpointEnabled();
36+
isRemovingEndpointEnabled.value = await monitoringClient.isRemovingEndpointEnabled();
5737
});
5838
</script>
5939

src/Frontend/src/components/monitoring/MonitoringNotAvailable.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
<script setup lang="ts">
22
import routeLinks from "@/router/routeLinks";
3-
import { useMonitoringStore } from "@/stores/MonitoringStore";
4-
import { storeToRefs } from "pinia";
3+
import monitoringClient from "./monitoringClient";
54
6-
const store = useMonitoringStore();
7-
const { monitoringUrl } = storeToRefs(store);
5+
const monitoringUrl = monitoringClient.url;
86
</script>
97

108
<template>

0 commit comments

Comments
 (0)