add abc
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Torma Kristóf 2020-08-19 00:44:04 +02:00
parent 38e7c466c7
commit 7334000eb8
Signed by: tormakris
GPG Key ID: DC83C4F2C41B1047
13 changed files with 182 additions and 0 deletions

38
.drone.yml Normal file
View File

@ -0,0 +1,38 @@
kind: pipeline
type: docker
name: default
steps:
- name: static_analysis
image: "python:3.8"
commands:
- pip3 install --cache-dir='./.pipcache' pylint bandit mccabe
- pip3 install --cache-dir='./.pipcache' -r requirements.txt
- find . -name "*.py" -exec python3 -m py_compile '{}' \;
- find . -name "*.py" -exec pylint '{}' + || if [ $? -eq 1 ]; then echo "you fail"; fi
- find . -name "*.py" -exec python3 -m mccabe --min 3 '{}' + || if [ $? -eq 1 ]; then echo "you fail"; fi
- bandit -r . + || if [ $? -eq 1 ]; then echo "you fail"; fi
- name: code-analysis
image: aosapps/drone-sonar-plugin
settings:
sonar_host:
from_secret: SONAR_HOST
sonar_token:
from_secret: SONAR_CODE
- name: sentry
image: tormachris/drone-sentry
settings:
sentry_project: ${DRONE_REPO_NAME}
sentry_domain: sentry.kmlabz.com
sentry_token:
from_secret: SENTRY_TOKEN
- name: ms-teams
image: kuperiu/drone-teams
settings:
webhook:
from_secret: TEAMS_WEBHOOK
when:
status: [ failure ]

1
.gitignore vendored
View File

@ -129,3 +129,4 @@ dmypy.json
# Pyre type checker # Pyre type checker
.pyre/ .pyre/
.idea/

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
sentry_sdk

31
src/app.py Normal file
View File

@ -0,0 +1,31 @@
#!/usr/bin/env python3
import logging
import sentry_sdk
from sentry_sdk.integrations.logging import LoggingIntegration
import config
"""
Main Entrypoint
"""
__author__ = "@tormakris"
__copyright__ = "Copyright 2020, Birbnetes Team"
__module_name__ = "app"
__version__text__ = "1"
sentry_logging = LoggingIntegration(
level=logging.INFO,
event_level=logging.ERROR
)
if config.SENTRY_DSN:
sentry_sdk.init(
dsn=config.SENTRY_DSN,
integrations=[sentry_logging],
traces_sample_rate=1.0,
send_default_pii=True,
release=config.RELEASE_ID,
environment=config.RELEASEMODE,
_experiments={"auto_enabling_integrations": True}
)

15
src/config.py Normal file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env python3
import os
"""
Main Flask RESTful API
"""
__author__ = "@tormakris"
__copyright__ = "Copyright 2020, Birbnetes Team"
__module_name__ = "app"
__version__text__ = "1"
SENTRY_DSN = os.environ.get("SENTRY_DSN")
RELEASE_ID = os.environ.get("RELEASE_ID", "test")
RELEASEMODE = os.environ.get("INPUT_SERVICE_RELEASEMODE", "dev")

View File

View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
from abc import ABC, abstractmethod
"""
Abstract base class for Sender
"""
__author__ = "@tormakris"
__copyright__ = "Copyright 2020, Birbnetes Team"
__module_name__ = "abcpreprocessor"
__version__text__ = "1"
class AbcPreProcessor(ABC):
"""
Abstract base class PreProcessor. Responsible for manipulating input data from a sensor.
"""
@abstractmethod
def preprocesssignal(self, signal):
"""
Preprocess a signal.
:return:
"""
pass

0
src/sender/__init__.py Normal file
View File

24
src/sender/abcsender.py Normal file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
from abc import ABC, abstractmethod
"""
Abstract base class for Sender
"""
__author__ = "@tormakris"
__copyright__ = "Copyright 2020, Birbnetes Team"
__module_name__ = "abcsender"
__version__text__ = "1"
class AbcSender(ABC):
"""
Abstract base class Sender. Responsible for sending results to the cloud.
"""
@abstractmethod
def sendvalue(self, value, decision):
"""
Send a value to the cloud.
:return:
"""
pass

0
src/sensor/__init__.py Normal file
View File

24
src/sensor/abcsensor.py Normal file
View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
from abc import ABC, abstractmethod
"""
Abstract base class for Sensor
"""
__author__ = "@tormakris"
__copyright__ = "Copyright 2020, Birbnetes Team"
__module_name__ = "abcsensor"
__version__text__ = "1"
class AbcSensor(ABC):
"""
Abstract base class Sensor. Responsible for value retrieval from hardware sensors.
"""
@abstractmethod
def getvalue(self):
"""
Retrieve a value from a sensor.
:return:
"""
pass

View File

View File

@ -0,0 +1,24 @@
#!/usr/bin/env python3
from abc import ABC, abstractmethod
"""
Abstract base class for signalprocessor
"""
__author__ = "@tormakris"
__copyright__ = "Copyright 2020, Birbnetes Team"
__module_name__ = "abcsignalprocessor"
__version__text__ = "1"
class AbcSignalProcessor(ABC):
"""
Abstract base class Signal Processor. Responsible for handling a signal processor pipeline.
"""
@abstractmethod
def processcurrentsignal(self):
"""
Process a signal.
:return:
"""
pass