Exemplo n.º 1
0
class RackEntry(db.Model):
    __tablename__ = "racks"

    identifier = db.Column(db.Integer, primary_key=True, unique=True)
    label = db.Column(db.String(80))
    datacenter_id = db.Column(db.Integer)
    pdu_left = db.Column(pg.ARRAY(db.Integer))
    pdu_right = db.Column(pg.ARRAY(db.Integer))

    def __init__(self, rack: Rack):
        self.label = rack.label
        self.datacenter_id = rack.datacenter_id
        self.pdu_left = rack.pdu_left
        self.pdu_right = rack.pdu_right

    def make_rack(self) -> Rack:
        """ Convert the database entry to a rack """
        return Rack(
            label=self.label,
            datacenter_id=self.datacenter_id,
            pdu_left=self.pdu_left,
            pdu_right=self.pdu_right,
        )

    def make_json(self) -> JSON:
        return {
            "label": self.label,
            "datacenter_id": self.datacenter_id,
            "pdu_left": self.pdu_left,
            "pdu_right": self.pdu_right,
        }
class ChangePlanEntry(db.Model):
    __tablename__ = "changePlan"

    identifier = db.Column(db.Integer, primary_key=True, unique=True)
    owner = db.Column(db.String(128))
    name = db.Column(db.String(128))
    executed = db.Column(db.Boolean)
    timestamp = db.Column(db.String(120), nullable=True)

    def __init__(self, change_plan: ChangePlan):
        self.owner = change_plan.owner
        self.name = change_plan.name
        self.executed = change_plan.executed

        if change_plan.timestamp == "":
            self.timestamp = None
        else:
            self.timestamp = change_plan.timestamp

        if change_plan.identifier != -1:
            self.identifier = change_plan.identifier

    def make_change_plan(self) -> ChangePlan:
        """ Convert the database entry to a datacenter """
        return ChangePlan(
            owner=self.owner,
            name=self.name,
            executed=self.executed,
            timestamp=self.timestamp,
            identifier=self.identifier,
        )
class DatacenterEntry(db.Model):
    __tablename__ = "datacenters"

    identifier = db.Column(db.Integer, primary_key=True, unique=True)
    abbreviation = db.Column(db.String(10), unique=True)
    name = db.Column(db.String(128), unique=True)
    is_offline_storage = db.Column(db.Boolean)

    def __init__(self, datacenter: Datacenter):
        self.abbreviation = datacenter.abbreviation
        self.name = datacenter.name
        self.is_offline_storage = datacenter.is_offline_storage

    def make_datacenter(self) -> Datacenter:
        """ Convert the database entry to a datacenter """
        return Datacenter(
            abbreviation=self.abbreviation,
            name=self.name,
            is_offline_storage=self.is_offline_storage,
        )
Exemplo n.º 4
0
class UserEntry(db.Model):
    __tablename__ = "users"

    username = db.Column(db.String(80), primary_key=True, unique=True)
    password_hash = db.Column(db.Binary(512))
    display_name = db.Column(db.String(80))
    email = db.Column(db.String(80))
    privilege = db.Column(pg.JSON, nullable=True)
    datacenters = db.Column(pg.ARRAY(Text), nullable=True)

    def __init__(self, user: User):
        self.username = user.username
        self.password_hash = user.password
        self.display_name = user.display_name
        self.email = user.email
        self.privilege = user.privilege
        self.datacenters = user.datacenters
Exemplo n.º 5
0
class DecommissionEntry(db.Model):
    __tablename__ = "decomission"

    identifier = db.Column(db.Integer, primary_key=True, unique=True)
    vendor = db.Column(db.String(80))
    model_number = db.Column(db.String(80))
    height = db.Column(db.Integer)
    hostname = db.Column(db.String(80), nullable=True)
    rack_label = db.Column(db.String(80))
    rack_position = db.Column(db.Integer)
    owner = db.Column(db.String(80), nullable=True)
    comment = db.Column(db.String(80), nullable=True)
    datacenter_name = db.Column(db.String(80))
    network_connections = db.Column(pg.JSON, nullable=True)
    power_connections = db.Column(pg.ARRAY(db.String(50)), nullable=True)
    asset_number = db.Column(db.Integer)
    chassis_hostname = db.Column(db.String(80), nullable=True)
    chassis_slot = db.Column(db.Integer, nullable=True)

    decommission_user = db.Column(db.String(80))
    timestamp = db.Column(db.String(120))
    network_neighborhood = db.Column(pg.JSON, nullable=True)

    def __init__(self, decommission: Decommission):
        self.vendor = decommission.vendor
        self.model_number = decommission.model_number
        self.height = decommission.height
        self.hostname = decommission.hostname
        self.rack_label = decommission.rack_label
        self.rack_position = decommission.rack_position
        self.owner = decommission.owner
        self.comment = decommission.comment
        self.datacenter_name = decommission.datacenter_name
        self.network_connections = decommission.network_connections
        self.power_connections = decommission.power_connections
        self.asset_number = decommission.asset_number
        self.chassis_hostname = decommission.chassis_hostname
        self.chassis_slot = decommission.chassis_slot
        self.decommission_user = decommission.decommission_user
        self.timestamp = decommission.timestamp
        self.network_neighborhood = decommission.network_neighborhood

    def make_decommission(self) -> Decommission:
        """ Convert the database entry to an instance """
        return Decommission(
            vendor=self.vendor,
            model_number=self.model_number,
            height=self.height,
            hostname=self.hostname,
            rack_label=self.rack_label,
            rack_position=self.rack_position,
            owner=self.owner,
            comment=self.comment,
            datacenter_name=self.datacenter_name,
            network_connections=self.network_connections,
            power_connections=self.power_connections,
            asset_number=self.asset_number,
            chassis_hostname=self.chassis_hostname,
            chassis_slot=self.chassis_slot,
            timestamp=self.timestamp,
            decommission_user=self.decommission_user,
            network_neighborhood=self.network_neighborhood,
        )
Exemplo n.º 6
0
class InstanceEntry(db.Model):
    __tablename__ = "instances"

    identifier = db.Column(db.Integer, primary_key=True, unique=True)
    model_id = db.Column(db.Integer)
    hostname = db.Column(db.String(80), nullable=True)
    rack_label = db.Column(db.String(80))
    rack_position = db.Column(db.Integer)
    owner = db.Column(db.String(80), nullable=True)
    comment = db.Column(db.String(80), nullable=True)
    datacenter_id = db.Column(db.Integer)
    network_connections = db.Column(pg.JSON, nullable=True)
    power_connections = db.Column(pg.ARRAY(db.String(50)), nullable=True)
    asset_number = db.Column(db.Integer)
    mount_type = db.Column(db.String(32))
    display_color = db.Column(db.String(80), nullable=True)
    cpu = db.Column(db.String(80), nullable=True)
    memory = db.Column(db.Integer, nullable=True)
    storage = db.Column(db.String(80), nullable=True)
    chassis_hostname = db.Column(db.String(80), nullable=True)
    chassis_slot = db.Column(db.Integer, nullable=True)

    def __init__(self, instance: Instance):
        self.model_id = instance.model_id
        self.hostname = instance.hostname
        self.rack_label = instance.rack_label
        self.rack_position = instance.rack_position
        self.owner = instance.owner
        self.comment = instance.comment
        self.datacenter_id = instance.datacenter_id
        self.network_connections = instance.network_connections
        self.power_connections = instance.power_connections
        self.asset_number = instance.asset_number
        self.mount_type = instance.mount_type

        # Model Vals
        self.display_color = instance.display_color
        self.cpu = instance.cpu
        self.memory = instance.memory
        self.storage = instance.storage

        # Chassis Reference
        self.chassis_hostname = instance.chassis_hostname
        self.chassis_slot = instance.chassis_slot

    def make_instance(self) -> Instance:
        """ Convert the database entry to an instance """
        return Instance(
            model_id=self.model_id,
            hostname=self.hostname,
            rack_label=self.rack_label,
            rack_position=self.rack_position,
            owner=self.owner,
            comment=self.comment,
            datacenter_id=self.datacenter_id,
            network_connections=self.network_connections,
            power_connections=self.power_connections,
            asset_number=self.asset_number,
            mount_type=self.mount_type,
            display_color=self.display_color,
            cpu=self.cpu,
            memory=self.memory,
            storage=self.storage,
            chassis_hostname=self.chassis_hostname,
            chassis_slot=self.chassis_slot,
        )

    def make_json(self) -> JSON:
        return {
            "model_id": self.model_id,
            "hostname": self.hostname,
            "rack_label": self.rack_label,
            "rack_position": self.rack_position,
            "owner": self.owner,
            "comment": self.comment,
            "datacenter_id": self.datacenter_id,
            "network_connections": self.network_connections,
            "power_connections": self.power_connections,
            "asset_number": self.asset_number,
            "mount_type": self.mount_type,
            "display_color": self.display_color,
            "cpu": self.cpu,
            "memory": self.memory,
            "storage": self.storage,
            "chassis_hostname": self.chassis_hostname,
            "chassis_slot": self.chassis_slot,
        }
Exemplo n.º 7
0
class ModelEntry(db.Model):
    __tablename__ = "models"

    identifier = db.Column(db.Integer, primary_key=True, unique=True)
    vendor = db.Column(db.String(80))
    model_number = db.Column(db.String(80))
    height = db.Column(db.Integer, nullable=True)
    display_color = db.Column(db.String(80), nullable=True)
    ethernet_ports = db.Column(pg.ARRAY(db.String(80)), nullable=True)
    power_ports = db.Column(db.Integer, nullable=True)
    cpu = db.Column(db.String(80), nullable=True)
    memory = db.Column(db.Integer, nullable=True)
    storage = db.Column(db.String(80), nullable=True)
    comment = db.Column(db.String(80), nullable=True)
    mount_type = db.Column(db.String(32))

    def __init__(self, model: Model):
        self.vendor = model.vendor
        self.model_number = model.model_number
        self.height = model.height
        self.display_color = model.display_color
        self.ethernet_ports = model.ethernet_ports
        self.power_ports = model.power_ports
        self.cpu = model.cpu
        self.memory = model.memory
        self.storage = model.storage
        self.comment = model.comment
        self.mount_type = model.mount_type

    def make_json(self) -> JSON:
        return {
            "vendor": self.vendor,
            "model_number": self.model_number,
            "height": self.height,
            "display_color": self.display_color,
            "ethernet_ports": self.ethernet_ports,
            "power_ports": self.power_ports,
            "cpu": self.cpu,
            "memory": self.memory,
            "storage": self.storage,
            "comment": self.comment,
            "mount_type": self.mount_type,
        }

    def make_model(self) -> Model:
        return Model(
            vendor=self.vendor,
            model_number=self.model_number,
            height=self.height,
            ethernet_ports=self.ethernet_ports,
            power_ports=self.power_ports,
            cpu=self.cpu,
            memory=self.memory,
            storage=self.storage,
            comment=self.comment,
            display_color=self.display_color,
            mount_type=self.mount_type,
        )