canonical / paas-app-charmer

2 stars 2 forks source link

Add Go support to paas-app-charmer #34

Closed javierdelapuente closed 2 months ago

javierdelapuente commented 2 months ago

Applicable spec: ISD153 - 12-Factor Go Support

Overview

This PR add support for Go for paas-app-charmer. The main differences of Go with Flask/Django is that Go is standalone and does not use a webserver like Gunicorn.

The main changes of this PR are:

New Go charm with framework configuration model. A very simple grafana dashboard. Examples and tests for Go. Logs will be implemented with Log forwarding in pebble and is not handled in this PR.

Documentation will be done outside of this PR.

Rationale

Go is widely used in web services and web development. As so, Go support is desired in the 12 factor framework.

Juju Events Changes

Module Changes

Library Changes

Checklist

github-actions[bot] commented 2 months ago

Test coverage for 34ddaded34ce8cd5cc890c3de60cfc22b38f3d16

Name                                            Stmts   Miss Branch BrPart  Cover   Missing
-------------------------------------------------------------------------------------------
paas_app_charmer/__init__.py                       29     14      0      0    52%   13-14, 19-20, 26-27, 33-34, 40-41, 47-48, 54-55
paas_app_charmer/_gunicorn/__init__.py              0      0      0      0   100%
paas_app_charmer/_gunicorn/charm.py                15      0      0      0   100%
paas_app_charmer/_gunicorn/webserver.py            76      4     14      1    94%   162, 174-180
paas_app_charmer/_gunicorn/workload_config.py       8      0      0      0   100%
paas_app_charmer/_gunicorn/wsgi_app.py             18      0      0      0   100%
paas_app_charmer/app.py                           120      0     48      2    99%   94->exit, 135->141
paas_app_charmer/charm.py                         212     25     46      4    88%   32-33, 40-41, 190-191, 193-194, 215->exit, 227-231, 284-286, 339-340, 345, 350, 355, 365, 370, 375, 380, 385, 410
paas_app_charmer/charm_state.py                   107      2     20      2    97%   184, 268
paas_app_charmer/charm_utils.py                    23      0      0      0   100%
paas_app_charmer/database_migration.py             35      0      2      0   100%
paas_app_charmer/databases.py                      25      2     11      1    92%   89-90
paas_app_charmer/django/__init__.py                 2      0      0      0   100%
paas_app_charmer/django/charm.py                   34      4      6      2    85%   44, 81, 96-97
paas_app_charmer/exceptions.py                      5      0      0      0   100%
paas_app_charmer/flask/__init__.py                  2      0      0      0   100%
paas_app_charmer/flask/charm.py                    24      0      0      0   100%
paas_app_charmer/go/__init__.py                     2      0      0      0   100%
paas_app_charmer/go/charm.py                       26      0      0      0   100%
paas_app_charmer/observability.py                  16      0      4      1    95%   40->44
paas_app_charmer/secret_storage.py                 50      3     16      5    88%   51, 55->54, 56->58, 86, 105
paas_app_charmer/utils.py                          11      2     12      2    65%   29, 31
-------------------------------------------------------------------------------------------
TOTAL                                             840     56    179     20    92%

Static code analysis report

Run started:2024-08-22 07:40:27.774511

Test results:
    No issues identified.

Code scanned:
    Total lines of code: 1831
    Total lines skipped (#nosec): 0
    Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): 0

Run metrics:
    Total issues (by severity):
        Undefined: 0
        Low: 0
        Medium: 0
        High: 0
    Total issues (by confidence):
        Undefined: 0
        Low: 0
        Medium: 0
        High: 0
Files skipped (0):