Skip to content
This repository has been archived by the owner on Dec 17, 2021. It is now read-only.

Commit

Permalink
feat: added job which checks if code is formatted correctly in Circle… (
Browse files Browse the repository at this point in the history
#20)

* feat: added job which checks if code is formatted correctly in CircleCi, code formatted using black

* Creating file for storing CLA Signatures

* @weliasz has signed the CLA from Pull Request #24

* @pszkamruk-splunk has signed the CLA from Pull Request #20

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
  • Loading branch information
2 people authored and lstoppa committed May 24, 2021
1 parent 1b21c8c commit 1207b5d
Show file tree
Hide file tree
Showing 7 changed files with 81 additions and 55 deletions.
19 changes: 16 additions & 3 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,17 @@ jobs:
path: build-container
destination: build-container

format-code:
docker:
- image: circleci/python:3.8.6
steps:
- checkout
- run:
name: "Check Formatting"
command: |
pip install black
black --check ./ --exclude mibs
release:
docker:
- image: circleci/node:12
Expand Down Expand Up @@ -68,11 +79,11 @@ jobs:
- run:
name: Release Docker Hub
command: |
export VERSION=${CIRCLE_TAG:=CIRCLE_SHA1}
export VERSION=${CIRCLE_TAG:=CIRCLE_SHA1}
VERSION_DOCKER_MMP=$(echo $VERSION | sed -n 's/v\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/p')
VERSION_DOCKER_MM=$(echo $VERSION | sed -n 's/v\([0-9]*\.[0-9]*\).*/\1/p')
VERSION_DOCKER_M=$(echo $VERSION | sed -n 's/v\([0-9]*\).*/\1/p')
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | python3 -
source $HOME/.poetry/env
poetry build
Expand Down Expand Up @@ -112,7 +123,7 @@ jobs:
command: |
go get -v -u github.com/tcnksm/ghr
PATH=$PATH:/usr/local/go/bin
export VERSION=${CIRCLE_TAG:=CIRCLE_SHA1}
export VERSION=${CIRCLE_TAG:=CIRCLE_SHA1}
[[ $VERSION =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]] && ISPRE="-prerelease"
$HOME/go/bin/ghr -t ${GH_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} ${ISPRE} ${VERSION} /tmp/workspace/
- store_artifacts:
Expand All @@ -122,6 +133,8 @@ workflows:
version: 2
build_test:
jobs:
- format-code

- build:
context:
- gdi-github
Expand Down
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -156,3 +156,6 @@ dmypy.json
.pyre/
mibs/.DS_Store
.DS_Store

# Intellij
.idea
4 changes: 3 additions & 1 deletion splunk_connect_for_snmp_mib_server/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import logging.config

logging.basicConfig(level=logging.INFO, format='%(asctime)s | %(name)s | %(levelname)s | %(message)s')
logging.basicConfig(
level=logging.INFO, format="%(asctime)s | %(name)s | %(levelname)s | %(message)s"
)
30 changes: 15 additions & 15 deletions splunk_connect_for_snmp_mib_server/mib_server.py
Original file line number Diff line number Diff line change
@@ -1,58 +1,58 @@
from flask import Flask, request, abort, jsonify, send_from_directory
from flask_autoindex import AutoIndex
import os
import yaml
import yaml
from splunk_connect_for_snmp_mib_server.mongo import MibsRepository, OidsRepository
from splunk_connect_for_snmp_mib_server.translator import Translator
import logging

logger = logging.getLogger(__name__)


class MibServer:
def __init__(self, args, server_config):
self._args = args
self._server_config = server_config
self._translator = Translator(server_config)
self._flask_app = self.build_flask_app()
def build_flask_app(self):

def build_flask_app(self):
app = Flask(__name__)
# ppath = os.environ['MIBS_SERVER_URL']
ppath = self._server_config["snmp"]["mibs"]["mibs_path"]
files_index = AutoIndex(app, ppath, add_url_rules=False)

@app.route('/')
@app.route("/")
def hello():
return "Hello, This is SNMP MIB server!"

# Custom indexing
@app.route('/files/')
@app.route('/files/<path:path>')
def autoindex(path='.'):
@app.route("/files/")
@app.route("/files/<path:path>")
def autoindex(path="."):
logger.debug(f"path: {path}")
return files_index.render_autoindex(path)

# Translate oid
@app.route('/translation', methods=['POST'])
@app.route("/translation", methods=["POST"])
def translator():
logger.debug(request.json)
var_binds = request.json.get('var_binds')
var_binds = request.json.get("var_binds")
metric = request.args.get("metric")
logger.debug(f"type of var_binds: {type(var_binds)}")
logger.debug(f"var_binds: {var_binds}")
logger.debug(f"type of metric: {str(metric)} -- metric: {metric}")
if metric == "True":
# TODO
# If metric is true, var_binds just has one
# If metric is true, var_binds just has one
var_bind = var_binds[0]
result = self._translator.format_metric_data(var_bind)
result = self._translator.format_metric_data(var_bind)
else:
result = self._translator.format_trap_event(var_binds)
return result

return app

def run_mib_server(self):
# TODO poetry run fails when debug=True
self._flask_app.run(host="0.0.0.0",port=self._args.port)

self._flask_app.run(host="0.0.0.0", port=self._args.port)
12 changes: 5 additions & 7 deletions splunk_connect_for_snmp_mib_server/snmp_mib_server.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import argparse
import os
import yaml
import yaml
from splunk_connect_for_snmp_mib_server.mongo import MibsRepository, OidsRepository
from splunk_connect_for_snmp_mib_server.mib_server import MibServer
import logging
Expand All @@ -13,12 +13,13 @@ def upload_mibs(server_config):
mib_files_dir = server_config["snmp"]["mibs"]["dir"]
mibs_collection = MibsRepository(mibs_mongo_config)
# TODO do we need to clean up before loading
# Clean up
# Clean up
mibs_collection.clear()
# Upload all mib files in specific dir into mongo
mibs_collection.upload_files(mib_files_dir)
logger.debug("Uploaded all mib files into mongo!")


def main():
logger.info(f"Startup Config")
parser = argparse.ArgumentParser()
Expand All @@ -36,7 +37,6 @@ def main():
)
parser.add_argument("-c", "--config", default="config.yaml", help="Config File")


args = parser.parse_args()

log_level = args.loglevel.upper()
Expand All @@ -51,15 +51,13 @@ def main():
with open(config_file, "r") as yamlfile:
server_config = yaml.load(yamlfile, Loader=yaml.FullLoader)



# Upload mib fiels into mongo
upload_mibs(server_config)

# Init MibServer
mib_server = MibServer(args, server_config)
mib_server.run_mib_server()


if __name__ == "__main__":
main()
main()
20 changes: 13 additions & 7 deletions tests/test_mongo.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,39 @@
import sys
sys.path.append('../')

sys.path.append("../")
from splunk_connect_for_snmp_mib_server.mongo import MibsRepository
import os


def main():
mongo_config = {'host': 'localhost', 'port': 27017, 'database': 'test', 'collection': 'mibs'}
mongo_config = {
"host": "localhost",
"port": 27017,
"database": "test",
"collection": "mibs",
}
mongo = MibsRepository(mongo_config)

mongo.clear()

# Upload mib files in /mibs/test to mongo
mib_files_dir = os.path.join(os.getcwd(), "..", "mibs","test")
mib_files_dir = os.path.join(os.getcwd(), "..", "mibs", "test")
mongo.upload_files(mib_files_dir)

# Search mib files based on oid
oid = "1, 3, 6, 1, 4, 1, 43, 2, 29, 1, 1"
filename = mongo.search_oid(oid)
print(filename)

# Delete one specifc file
if filename:
mongo.delete_mib(filename)
print(mongo.search_oid(oid))

# Delete multiple files
filename_regex="A3COM"
filename_regex = "A3COM"
mongo.delete_mib(filename_regex)


if __name__ == '__main__':
main()
if __name__ == "__main__":
main()
48 changes: 26 additions & 22 deletions tests/test_translator.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
import sys
sys.path.append('../')

sys.path.append("../")
import yaml

# from splunk_connect_for_snmp_mib_server.mongo import OidsRepository
from splunk_connect_for_snmp_mib_server.translator import Translator
import os
import logging

logger = logging.getLogger(__name__)


def main():
logger.debug("Start:....")
# Read config file
Expand All @@ -18,27 +22,27 @@ def main():
my_translator = Translator(server_config)

var_binds_list = [
{
"oid": '1.3.6.1.2.1.1.3.0',
"oid_type": "ObjectName",
"val": "123",
"val_type": "TimeTicks"
},
{
"oid": '1.3.6.1.6.3.1.1.4.1.0',
"oid_type": "ObjectName",
"val": "1.3.6.1.4.1.1978.2.14.1.1.1",
"val_type": "ObjectIdentifier"
},
{
"oid": '1.3.6.1.6.3.1.1.4.1.0',
"oid_type": "ObjectName",
"val": "1.3.6.1.4.1.90000.1",
"val_type": "ObjectIdentifier"
}
]
{
"oid": "1.3.6.1.2.1.1.3.0",
"oid_type": "ObjectName",
"val": "123",
"val_type": "TimeTicks",
},
{
"oid": "1.3.6.1.6.3.1.1.4.1.0",
"oid_type": "ObjectName",
"val": "1.3.6.1.4.1.1978.2.14.1.1.1",
"val_type": "ObjectIdentifier",
},
{
"oid": "1.3.6.1.6.3.1.1.4.1.0",
"oid_type": "ObjectName",
"val": "1.3.6.1.4.1.90000.1",
"val_type": "ObjectIdentifier",
},
]
my_translator.format_trap_event(var_binds_list)

if __name__ == '__main__':
main()

if __name__ == "__main__":
main()

0 comments on commit 1207b5d

Please sign in to comment.