Skip to main content

Package with general devops code

Project description

CCDCOE package

GitHub Release GPLv3 License

pypi

This package contains generic re-usable code.

Install the full package:

pip install ccdcoe[all]

Package has several modules which can be installed separately by specifying them as an extra requirement. To install the http_apis module only, specify:

pip install ccdcoe[http_apis]

Or for multiple modules:

pip install ccdcoe[http_apis, loggers]

Adding modules and/or groups

Everything for this package is defined in the pyproject.toml file. Dependencies are managed by poetry and grouped in, you guessed it, groups. Every poetry group can be installed as an extra using pip.

Extra extras or group on group/extra dependencies can also be defined in the [tool.ccdcoe.group.dependencies] section. Everything defined here will also become an extra if no group already exists. You can use everything defined here as dependency for another group, order does not matter.

example:

[tool.ccdcoe.group.dependencies]
my_awesome_extra = ["my_awesome_group", "my_other_group"]
my_awesome_group = ["my_logging_group"]

[tool.poetry.group.my_awesome_group.dependencies]
<dependency here>

[tool.poetry.group.my_other_group.dependencies]
<dependency here>

[tool.poetry.group.my_logging_group.dependencies]
<dependency here>

Using this example the following extras exist with the correct dependencies:

pip install ccdcoe[all]
pip install ccdcoe[my-awesome-extra]
pip install ccdcoe[my-awesome-group]
pip install ccdcoe[my-other-group]
pip install ccdcoe[my-logging-group]

Modules

The following modules are available in the ccdcoe package:

  • http_apis
  • loggers
  • dumpers
  • deployments
  • cli
  • redis_cache
  • flask_managers
  • flask_middleware
  • flask_plugins
  • auth
  • sso
  • plugins
  • sql_migrations

HTTP apis

Baseclass for http api communication is present under ccdcoe.http_apis.base_class.api_base_class.ApiBaseClass

Loggers

There are three loggers provided:

  • ConsoleLogger (ccdcoe.loggers.app_logger.ConsoleLogger)
  • AppLogger (ccdcoe.loggers.app_logger.AppLogger)
  • GunicornLogger (ccdcoe.loggers.app_logger.GunicornLogger)

The ConsoleLogger is intended as a loggerClass for cli applications.

The AppLogger is intended to be used as a loggerClass to be used for the standard python logging module.

import logging
from ccdcoe.loggers.app_logger import AppLogger

logging.setLoggerClass(AppLogger)

mylogger = logging.getLogger(__name__)

The 'mylogger' instance has all the proper formatting and handlers (according to the desired config) to log messages.

The Gunicorn logger is intended to be used for as a loggerClass for the gunicorn webserver; it enables the FlaskAppManager to set the necessary formatting and handles according to the AppLogger specs and a custom format for the gunicorn access logging.

Flask app manager

The FlaskAppManager is intended to be used to 'run' flask applications in both test, development as in production environments.

from YADA import app
from ccdcoe.flask_managers.flask_app_manager import FlaskAppManager

fam = FlaskAppManager(version="1.0", app=app)
fam.run()

Depending on the configuration the FlaskAppManager uses a werkzeug (DEBUG == True) or a gunicorn webserver. TLS could be set for both webservers iaw the module specific README.md.

SQL Migrations

The sql migrations can be used to facilitate migration between different versions of sql models / versions. It relies on flask migrate to perform the different migrations. It has a CLI as well as an python class based API.

Check the command line help

python3 -m ccdcoe.sql_migrations.flask_sql_migrate -a /path/to/script_with_flask_app.py -i
python3 -m ccdcoe.sql_migrations.flask_sql_migrate -a /path/to/script_with_flask_app.py -m
python3 -m ccdcoe.sql_migrations.flask_sql_migrate -a /path/to/script_with_flask_app.py -u

Or initiate the FlaskSqlMigrate as a class and initiate the migration process from there:

from ccdcoe.sql_migrations.flask_sql_migrate import FlaskSqlMigrate
fsm = FlaskSqlMigrate(app_ref="/path/to/script_with_flask_app.py")

fsm.db_init()
fsm.db_migrate()
fsm.db_update()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccdcoe-0.0.22.tar.gz (98.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ccdcoe-0.0.22-py3-none-any.whl (117.9 kB view details)

Uploaded Python 3

File details

Details for the file ccdcoe-0.0.22.tar.gz.

File metadata

  • Download URL: ccdcoe-0.0.22.tar.gz
  • Upload date:
  • Size: 98.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ccdcoe-0.0.22.tar.gz
Algorithm Hash digest
SHA256 4ca7168b0cee364116c0c63a7af82ab1918baeffcbf4ab2ae2b308eec8e8d915
MD5 c04fcdedb6b04d02e8229b11c4add471
BLAKE2b-256 5226e8029045e522b43a6469885f0b532af0865ccf8318223d14f669bf997326

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccdcoe-0.0.22.tar.gz:

Publisher: package_to_pypi.yaml on ccdcoe/ccdcoe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ccdcoe-0.0.22-py3-none-any.whl.

File metadata

  • Download URL: ccdcoe-0.0.22-py3-none-any.whl
  • Upload date:
  • Size: 117.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ccdcoe-0.0.22-py3-none-any.whl
Algorithm Hash digest
SHA256 a8d2fceaf7e05d7087bb3b871a6225dc604d40143a9004a68757234bd06585c8
MD5 86c08817832e5a42b0a8e9d5640491f6
BLAKE2b-256 cd4b5b908c775e5897153058f24c6a72ce743e083120a4bb32a878d20f525a03

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccdcoe-0.0.22-py3-none-any.whl:

Publisher: package_to_pypi.yaml on ccdcoe/ccdcoe

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page