From 4cdec767b65a6a2ffeef5b7ec8056347fc4aeabd Mon Sep 17 00:00:00 2001 From: samuel-p Date: Sun, 10 Jan 2021 18:26:10 +0100 Subject: [PATCH 1/3] minor bug fix --- config.json | 21 --------------------- src/app/app.component.ts | 2 +- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/config.json b/config.json index d781b11..c4a0d27 100644 --- a/config.json +++ b/config.json @@ -2,12 +2,6 @@ "authToken": "test", "title": "sp-status", "description": "Services hosted by sp-codes", - "translations": { - "de": { - "title": "sp-status", - "description": "Services von sp-codes bereitgestellt" - } - }, "servicesPath": "$.alerts.*", "idPath": "$.labels.status_service", "statePath": "$.status", @@ -26,21 +20,6 @@ "name": "My Service", "url": "http://sp-codes.de", "statePath": "$.state" - }, { - "id": "test3", - "name": "Test3", - "statePath": "$.state" - } - ] - }, { - "id": "group2", - "name": "Group2", - "services": [ - { - "id": "test2", - "name": "Test2", - "url": "http://sp-codes.de", - "statePath": "$.state" } ] } diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 32afafa..31058b6 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -38,7 +38,7 @@ export class AppComponent implements OnInit { this.api.getMetaInfo().subscribe(info => { this.title = info.title; this.description = info.description; - this.translations = info.translations; + this.translations = info.translations || {}; this.htmlTitle.setTitle(this.title); }); } -- 2.45.2 From 031f8fa1c48505a47796225cfebbb235e20333cc Mon Sep 17 00:00:00 2001 From: samuel-p Date: Sun, 10 Jan 2021 18:26:26 +0100 Subject: [PATCH 2/3] updated config --- config.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/config.json b/config.json index c4a0d27..e9d3a61 100644 --- a/config.json +++ b/config.json @@ -2,6 +2,12 @@ "authToken": "test", "title": "sp-status", "description": "Services hosted by sp-codes", + "translations": { + "de": { + "title": "sp-status", + "description": "Services von sp-codes bereitgestellt" + } + }, "servicesPath": "$.alerts.*", "idPath": "$.labels.status_service", "statePath": "$.status", -- 2.45.2 From 12318e6c2e383af7c96ad7603949daa6fbe82ff3 Mon Sep 17 00:00:00 2001 From: samuel-p Date: Sun, 10 Jan 2021 19:10:12 +0100 Subject: [PATCH 3/3] minor improvements --- src/main.status.ts | 89 +++++++++------------------------------------- 1 file changed, 17 insertions(+), 72 deletions(-) diff --git a/src/main.status.ts b/src/main.status.ts index 6f6de4c..879afed 100644 --- a/src/main.status.ts +++ b/src/main.status.ts @@ -60,7 +60,19 @@ const serviceStatePaths: { [service: string]: string } = config.groups }, {}); let cache: CurrentStatus; -let uptimeStates = existsSync(join(process.cwd(), 'uptime.json')) ? JSON.parse(readFileSync(join(process.cwd(), 'uptime.json'), {encoding: 'utf-8'})) : {} as { [id: string]: UptimeStatus; }; +let uptimeStates = existsSync(join(process.cwd(), 'uptime.json')) ? JSON.parse(readFileSync(join(process.cwd(), 'uptime.json'), {encoding: 'utf-8'})) : null as { [id: string]: UptimeStatus; }; +config.groups + .map(g => g.services).reduce((x, y) => x.concat(y), []) + .map(s => s.id).filter(id => !serviceStates[id]) + .forEach(id => serviceStates[id] = 'operational'); +if (!uptimeStates) { + uptimeStates = {}; + for (let id in serviceStates) { + if (serviceStates.hasOwnProperty(id)) { + updateServiceState(id, serviceStates[id]); + } + } +} updateCache(); api.post('/update/health', (req, res) => { @@ -164,16 +176,13 @@ api.get('/info', (req, res) => { }); function updateServiceState(id: string, state: string) { + if (!uptimeStates[id]) { + uptimeStates[id] = {days: [], events: []}; + } if (serviceStates[id] === state) { return; } serviceStates[id] = state; - if (!uptimeStates[id]) { - uptimeStates[id] = { - days: [], - events: [] - }; - } if (uptimeStates[id].events.length === 0 && state !== 'operational' || uptimeStates[id].events.length > 0 && uptimeStates[id].events[0].state !== state) { uptimeStates[id].events.unshift({state: state, date: new Date()}); @@ -218,7 +227,7 @@ function updateUptime() { const uptime = uptimeStates[id] as UptimeStatus; if (uptime.days.length < 90) { for (let i = 0; i < 90; i++) { - uptime.days.push({date: today.subtract(90 - i, 'd').toDate(), uptime: 100}) + uptime.days.push({date: today.subtract(90 - i, 'd').toDate(), uptime: 100}); } } if (today.diff(dayjs.utc(uptime.days[uptime.days.length - 1].date), 'd') >= 1) { @@ -292,68 +301,4 @@ function persistCache() { new CronJob('0 * * * * *', () => updateCache(), null, true, 'UTC').start(); new CronJob('0 0 * * * *', () => persistCache(), null, true, 'UTC').start(); - -api.get('/test', (req, res) => { - return res.json({ - '50_5': calculateUptime(dayjs.utc('2020-01-02'), dayjs.utc('2020-01-03'), [{ - state: 'outage', - date: new Date('2020-01-03T12:00:00.000Z') - }, { - state: 'operational', - date: new Date('2020-01-02T18:00:00.000Z') - }, { - state: 'outage', - date: new Date('2020-01-02T06:00:00.000Z') - }, { - state: 'operational', - date: new Date('2020-01-01T12:00:00.000Z') - }]), - '50_4': calculateUptime(dayjs.utc('2020-01-02'), dayjs.utc('2020-01-03'), [{ - state: 'operational', - date: new Date('2020-01-02T18:00:00.000Z') - }, { - state: 'outage', - date: new Date('2020-01-02T06:00:00.000Z') - }, { - state: 'operational', - date: new Date('2020-01-01T12:00:00.000Z') - }]), - '50_3': calculateUptime(dayjs.utc('2020-01-02'), dayjs.utc('2020-01-03'), [{ - state: 'outage', - date: new Date('2020-01-02T12:00:00.000Z') - }, { - state: 'operational', - date: new Date('2020-01-01T12:00:00.000Z') - }]), - '50_2': calculateUptime(dayjs.utc('2020-01-02'), dayjs.utc('2020-01-03'), [{ - state: 'outage', - date: new Date('2020-01-02T18:00:00.000Z') - }, { - state: 'operational', - date: new Date('2020-01-02T06:00:00.000Z') - }]), - '50_1': calculateUptime(dayjs.utc('2020-01-02'), dayjs.utc('2020-01-03'), [{ - state: 'operational', - date: new Date('2020-01-02T12:00:00.000Z') - }, { - state: 'outage', - date: new Date('2020-01-01T12:00:00.000Z') - }]), - '50_0': calculateUptime(dayjs.utc('2020-01-01'), dayjs.utc('2020-01-02'), [{ - state: 'operational', - date: new Date('2020-01-01T12:00:00.000Z') - }]), - '75': calculateUptime(dayjs.utc('2020-01-01'), dayjs.utc('2020-01-02'), [{ - state: 'operational', - date: new Date('2020-01-01T06:00:00.000Z') - }]), - '100': calculateUptime(dayjs.utc('2020-01-01'), dayjs.utc('2020-01-02'), []), - '0': calculateUptime(dayjs.utc('2020-01-02'), dayjs.utc('2020-01-03'), [{ - state: 'outage', - date: new Date('2020-01-01T12:00:00.000Z') - }]), - 'test': calculateUptime(dayjs.utc('2020-01-07'), dayjs.utc(), [{state: 'outage', date: new Date('2021-01-07T13:54:32.705Z')}]) - }); -}); - export {api}; -- 2.45.2