import sqlalchemy
from sqlalchemy import BigInteger, Boolean, Column, DateTime, Double, ForeignKey, Integer, Text
+from sqlalchemy.dialects.postgresql import INET
from . import base
from . import database
# Connections
- def connected(self, connection):
+ def connected(self, connection, address=None):
"""
Called when a builder has connected
"""
# Store the connection
self.backend.builders.connections[self.name] = connection
+ # Remember when it last connected
+ self.connected_at = sqlalchemy.func.current_timestamp()
+
+ # Store the IP address the builder connected from
+ self.connected_from = address
+
def disconnected(self):
"""
Called when a builder has disconnected
except KeyError:
pass
+ # Connected At
+
+ connected_at = Column(DateTime(timezone=False))
+
+ # Connected From
+
+ connected_from = Column(INET)
+
def dispatch_job(self, job):
# Throw an error if the builder isn't online any more
if not self.is_online():
deleted_at timestamp without time zone,
deleted_by_id integer,
sys_vendor text,
- sys_name text
+ sys_name text,
+ connected_at timestamp without time zone,
+ connected_from inet
);
async def open(self):
# The builder has opened a new connection
- self.builder.connected(self)
+ self.builder.connected(self, address=self.current_address)
# Update the builder information
async with await self.db.transaction():