Skip to content

Commit 4a275ae

Browse files
mbuechsegarloff
andauthored
Add visual clue to clouds table (#784)
resolves #783 Signed-off-by: Matthias Büchse <[email protected]> Co-authored-by: Kurt Garloff <[email protected]>
1 parent e2922ed commit 4a275ae

File tree

2 files changed

+31
-23
lines changed

2 files changed

+31
-23
lines changed

compliance-monitor/monitor.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,10 @@ def evaluate(self, scope_results):
284284
# always include draft (but only at the end)
285285
relevant.extend(by_validity['draft'])
286286
passed = [vname for vname in relevant if version_results[vname]['result'] == 1]
287+
if passed:
288+
summary = 1 if self.versions[passed[0]].validity in ('effective', 'warn') else -1
289+
else:
290+
summary = 0
287291
return {
288292
'name': self.name,
289293
'versions': version_results,
@@ -293,6 +297,7 @@ def evaluate(self, scope_results):
293297
vname + ASTERISK_LOOKUP[self.versions[vname].validity]
294298
for vname in passed
295299
]),
300+
'summary': summary,
296301
}
297302

298303
def update_lookup(self, target_dict):
@@ -679,15 +684,17 @@ async def post_results(
679684
conn.commit()
680685

681686

682-
def passed_filter(results, subject, scope):
683-
"""Jinja filter to pick list of passed versions from `results` for given `subject` and `scope`"""
684-
subject_data = results.get(subject)
685-
if not subject_data:
686-
return ""
687-
scope_data = subject_data.get(scope)
688-
if not scope_data:
689-
return ""
690-
return scope_data['passed_str']
687+
def pick_filter(results, subject, scope):
688+
"""Jinja filter to pick scope results from `results` for given `subject` and `scope`"""
689+
return results.get(subject, {}).get(scope, {})
690+
691+
692+
def summary_filter(scope_results):
693+
"""Jinja filter to construct summary from `scope_results`"""
694+
passed_str = scope_results.get('passed_str', '') or '–'
695+
summary = scope_results.get('summary', 0)
696+
color = {1: '✅'}.get(summary, '🛑') # instead of 🟢🔴 (hard to distinguish for color-blind folks)
697+
return f'{color} {passed_str}'
691698

692699

693700
def verdict_filter(value):
@@ -721,7 +728,8 @@ def reload_static_config(*args, do_ensure_schema=False):
721728
if __name__ == "__main__":
722729
logging.basicConfig(format='%(levelname)s: %(message)s', level=logging.INFO)
723730
env.filters.update(
724-
passed=passed_filter,
731+
pick=pick_filter,
732+
summary=summary_filter,
725733
verdict=verdict_filter,
726734
verdict_check=verdict_check_filter,
727735
markdown=markdown,

compliance-monitor/templates/overview.md.j2

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,37 @@ for the time being to have the highest degree of control
66
| Name | Description | Operator | [SCS-compatible IaaS](https://docs.scs.community/standards/scs-compatible-iaas/) | HealthMon |
77
|-------|--------------|-----------|----------------------|:----------:|
88
| [gx-scs](https://github.com/SovereignCloudStack/docs/blob/main/community/cloud-resources/plusserver-gx-scs.md) | Dev environment provided for SCS & GAIA-X context | plusserver GmbH |
9-
{#- #} [{{ results | passed('gx-scs', iaas) or '–' }}]({{ detail_url('gx-scs', iaas) }}) {# -#}
9+
{#- #} [{{ results | pick('gx-scs', iaas) | summary }}]({{ detail_url('gx-scs', iaas) }}) {# -#}
1010
| [HM](https://health.gx-scs.sovereignit.cloud:3000/) |
1111
| [aov.cloud](https://www.aov.de/) | Community cloud for customers | aov IT.Services GmbH |
12-
{#- #} [{{ results | passed('aov', iaas) or '–' }}]({{ detail_url('aov', iaas) }}) {# -#}
12+
{#- #} [{{ results | pick('aov', iaas) | summary }}]({{ detail_url('aov', iaas) }}) {# -#}
1313
| [HM](https://health.aov.cloud/) |
1414
| [CNDS](https://cnds.io/) | Public cloud for customers | artcodix GmbH |
15-
{#- #} [{{ results | passed('artcodix', iaas) or '–' }}]({{ detail_url('artcodix', iaas) }}) {# -#}
15+
{#- #} [{{ results | pick('artcodix', iaas) | summary }}]({{ detail_url('artcodix', iaas) }}) {# -#}
1616
| [HM](https://ohm.muc.cloud.cnds.io/) |
1717
| [pluscloud open](https://www.plusserver.com/en/products/pluscloud-open)<br />(4 regions) | Public cloud for customers | plusserver GmbH | {# #}
18-
{#- #}prod1: [{{ results | passed('pco-prod1', iaas) or '–' }}]({{ detail_url('pco-prod1', iaas) }}){# -#}
18+
{#- #}prod1: [{{ results | pick('pco-prod1', iaas) | summary }}]({{ detail_url('pco-prod1', iaas) }}){# -#}
1919
<br />
20-
{#- #}prod2: [{{ results | passed('pco-prod2', iaas) or '–' }}]({{ detail_url('pco-prod2', iaas) }}){# -#}
20+
{#- #}prod2: [{{ results | pick('pco-prod2', iaas) | summary }}]({{ detail_url('pco-prod2', iaas) }}){# -#}
2121
<br />
22-
{#- #}prod3: [{{ results | passed('pco-prod3', iaas) or '–' }}]({{ detail_url('pco-prod3', iaas) }}){# -#}
22+
{#- #}prod3: [{{ results | pick('pco-prod3', iaas) | summary }}]({{ detail_url('pco-prod3', iaas) }}){# -#}
2323
<br />
24-
{#- #}prod4: [{{ results | passed('pco-prod4', iaas) or '–' }}]({{ detail_url('pco-prod4', iaas) }}) {# -#}
24+
{#- #}prod4: [{{ results | pick('pco-prod4', iaas) | summary }}]({{ detail_url('pco-prod4', iaas) }}) {# -#}
2525
| [HM1](https://health.prod1.plusserver.sovereignit.cloud:3000/d/9ltTEmlnk/openstack-health-monitor2?orgId=1&var-mycloud=plus-pco)<br />[HM2](https://health.prod1.plusserver.sovereignit.cloud:3000/d/9ltTEmlnk/openstack-health-monitor2?orgId=1&var-mycloud=plus-prod2)<br />[HM3](https://health.prod1.plusserver.sovereignit.cloud:3000/d/9ltTEmlnk/openstack-health-monitor2?orgId=1&var-mycloud=plus-prod3)<br />[HM4](https://health.prod1.plusserver.sovereignit.cloud:3000/d/9ltTEmlnk/openstack-health-monitor2?orgId=1&var-mycloud=plus-prod4) |
2626
| PoC KDO | Cloud PoC for FITKO | KDO Service GmbH / OSISM GmbH |
27-
{#- #} [{{ results | passed('poc-kdo', iaas) or '–' }}]({{ detail_url('poc-kdo', iaas) }}) {# -#}
27+
{#- #} [{{ results | pick('poc-kdo', iaas) | summary }}]({{ detail_url('poc-kdo', iaas) }}) {# -#}
2828
| (soon) |
2929
| PoC WG-Cloud OSBA | Cloud PoC for FITKO | Cloud&amp;Heat Technologies GmbH |
30-
{#- #} [{{ results | passed('poc-wgcloud', iaas) or '–' }}]({{ detail_url('poc-wgcloud', iaas) }}) {# -#}
30+
{#- #} [{{ results | pick('poc-wgcloud', iaas) | summary }}]({{ detail_url('poc-wgcloud', iaas) }}) {# -#}
3131
| [HM](https://health.poc-wgcloud.osba.sovereignit.cloud:3000/d/9ltTEmlnk/openstack-health-monitor2?var-mycloud=poc-wgcloud&orgId=1) |
3232
| [REGIO.cloud](https://regio.digital) | Public cloud for customers | OSISM GmbH |
33-
{#- #} [{{ results | passed('regio-a', iaas) or '–' }}]({{ detail_url('regio-a', iaas) }}) {# -#}
33+
{#- #} [{{ results | pick('regio-a', iaas) | summary }}]({{ detail_url('regio-a', iaas) }}) {# -#}
3434
| [HM](https://apimon.services.regio.digital/public-dashboards/17cf094a47404398a5b8e35a4a3968d4?orgId=1&refresh=5m) |
3535
| [syseleven](https://www.syseleven.de/en/products-services/openstack-cloud/)<br />(2 SCS regions) | Public OpenStack Cloud | SysEleven GmbH | {# #}
36-
{#- #}dus2: [{{ results | passed('syseleven-dus2', iaas) or '–' }}]({{ detail_url('syseleven-dus2', iaas) }}){# -#}
36+
{#- #}dus2: [{{ results | pick('syseleven-dus2', iaas) | summary }}]({{ detail_url('syseleven-dus2', iaas) }}){# -#}
3737
<br />
38-
{#- #}ham1: [{{ results | passed('syseleven-ham1', iaas) or '–' }}]({{ detail_url('syseleven-ham1', iaas) }}) {# -#}
38+
{#- #}ham1: [{{ results | pick('syseleven-ham1', iaas) | summary }}]({{ detail_url('syseleven-ham1', iaas) }}) {# -#}
3939
| (soon)<br />(soon) |
4040
| [Wavestack](https://www.noris.de/wavestack-cloud/) | Public cloud for customers | noris network AG/Wavecon GmbH |
41-
{#- #} [{{ results | passed('wavestack', iaas) or '–' }}]({{ detail_url('wavestack', iaas) }}) {# -#}
41+
{#- #} [{{ results | pick('wavestack', iaas) | summary }}]({{ detail_url('wavestack', iaas) }}) {# -#}
4242
| [HM](https://health.wavestack1.sovereignit.cloud:3000/) |

0 commit comments

Comments
 (0)