Skip to content

Commit

Permalink
split models into individual files for modularity
Browse files Browse the repository at this point in the history
  • Loading branch information
taylorwalton committed Jul 11, 2023
1 parent 9bc7d4d commit 0026e00
Show file tree
Hide file tree
Showing 5 changed files with 304 additions and 128 deletions.
35 changes: 35 additions & 0 deletions backend/app/models/artifacts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
from datetime import datetime

from app import db
from app import ma
from sqlalchemy.dialects.postgresql import TEXT # Add this line

# Class for artifacts collected which stores the artifact name, artificat results (json), hostname
# Path: backend\app\models.py
class Artifact(db.Model):
id = db.Column(db.Integer, primary_key=True)
artifact_name = db.Column(db.String(100))
artifact_results = db.Column(TEXT)
hostname = db.Column(db.String(100))

def __init__(self, artifact_name, artifact_results, hostname):
self.artifact_name = artifact_name
self.artifact_results = artifact_results
self.hostname = hostname

def __repr__(self):
return f"<Artifact {self.artifact_name}>"


class ArtifactSchema(ma.Schema):
class Meta:
fields = (
"id",
"artifact_name",
"artifact_results",
"hostname",
)


artifact_schema = ArtifactSchema()
artifacts_schema = ArtifactSchema(many=True)
34 changes: 34 additions & 0 deletions backend/app/models/cases.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
from datetime import datetime

from app import db
from app import ma

# Class for cases which stores the case ID, case name, list of agents
# Path: backend\app\models.py
class Case(db.Model):
id = db.Column(db.Integer, primary_key=True)
case_id = db.Column(db.Integer)
case_name = db.Column(db.String(100))
agents = db.Column(db.String(1000))

def __init__(self, case_id, case_name, agents):
self.case_id = case_id
self.case_name = case_name
self.agents = agents

def __repr__(self):
return f"<Case {self.case_id}>"


class CaseSchema(ma.Schema):
class Meta:
fields = (
"id",
"case_id",
"case_name",
"agents",
)


case_schema = CaseSchema()
cases_schema = CaseSchema(many=True)
58 changes: 58 additions & 0 deletions backend/app/models/graylog.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
from datetime import datetime

from app import db
from app import ma

# Class for Graylog allocation which stores throughput metrics
# Generate timestamp for each entry and invoke every 5 minutes.
# Path: backend\app\models.py
class GraylogMetricsAllocation(db.Model):
id = db.Column(db.Integer, primary_key=True)
input_usage = db.Column(db.Float)
output_usage = db.Column(db.Float)
processor_usage = db.Column(db.Float)
input_1_sec_rate = db.Column(db.Float)
output_1_sec_rate = db.Column(db.Float)
total_input = db.Column(db.Float)
total_output = db.Column(db.Float)
timestamp = db.Column(db.DateTime, default=datetime.utcnow)

def __init__(
self,
input_usage,
output_usage,
processor_usage,
input_1_sec_rate,
output_1_sec_rate,
total_input,
total_output,
):
self.input_usage = input_usage
self.output_usage = output_usage
self.processor_usage = processor_usage
self.input_1_sec_rate = input_1_sec_rate
self.output_1_sec_rate = output_1_sec_rate
self.total_input = total_input
self.total_output = total_output

def __repr__(self):
return f"<GraylogMetricsAllocation {self.id}>"


class GraylogMetricsAllocationSchema(ma.Schema):
class Meta:
fields = (
"id",
"input_usage",
"output_usage",
"processor_usage",
"input_1_sec_rate",
"output_1_sec_rate",
"total_input",
"total_output",
"timestamp",
)


graylog_metrics_allocation_schema = GraylogMetricsAllocationSchema()
graylog_metrics_allocations_schema = GraylogMetricsAllocationSchema(many=True)
Loading

0 comments on commit 0026e00

Please sign in to comment.