Example #1
0
class Attr(db.Model):
    attrid = db.Column(db.Integer, primary_key=True)
    attrname = db.Column(db.String(80))
    attrvalue = db.Column(db.String(80))

    displaytablerow_id = db.Column(
        db.Integer, db.ForeignKey('displaytablerow.displaytablerowid'))
    chartconfig_id = db.Column(db.Integer,
                               db.ForeignKey('chartconfig.chartconfigid'))
    operation_id = db.Column(db.Integer,
                             db.ForeignKey('operation.operationid'))

    def __init__(self,
                 attrname,
                 attrvalue,
                 displaytablerow=None,
                 chartconfig=None,
                 operation=None):
        self.attrname = attrname
        self.attrvalue = attrvalue
        self.displaytablerow = displaytablerow
        self.chartconfig = chartconfig
        self.operation = operation

    def __repr__(self):
        return '<Attr key: %r value: %r>' % (self.attrname, self.attrvalue)
Example #2
0
class Selectedmetrics(db.Model):
    selectedmetricsid = db.Column(db.Integer, primary_key=True)
    window_id = db.Column(db.Integer, db.ForeignKey('window.windowid'))
    report_id = db.Column(db.Integer, db.ForeignKey('report.reportid'))

    options = db.relationship('Option',
                              backref='selectedmetrics',
                              lazy='dynamic')

    def __init__(self, window, report=None):
        self.window = window
        self.report = report

    def __repr__(self):
        return '<Selectedmetrics %r>' % self.selectedmetricsid
Example #3
0
class Report(db.Model):
    reportid = db.Column(db.Integer, primary_key=True)
    scaletype = db.Column(db.Integer)
    functiontype = db.Column(db.Integer)
    reportname = db.Column(db.String(80))
    user_id = db.Column(db.Integer, db.ForeignKey('user.userid'))
    title = db.Column(db.String(80))
    discription = db.Column(db.String(200))
    imgs = db.relationship('Reportimg', backref='report', lazy='dynamic')

    selectedmetrics = db.relationship('Selectedmetrics',
                                      backref='report',
                                      lazy='dynamic')

    def __init__(self,
                 scaletype,
                 functiontype,
                 reportname,
                 owner,
                 title=None,
                 discription=None):
        self.scaletype = scaletype
        self.functiontype = functiontype
        self.reportname = reportname
        self.owner = owner
        self.title = title
        self.discription = discription

    def __repr__(self):
        return '<Report %r>' % self.reportname
Example #4
0
class Trigger(db.Model):
	triggerid = db.Column(db.Integer,primary_key=True,autoincrement=False)
	triggername = db.Column(db.String(100))
	triggervalue = db.Column(db.Float)
	timeshift = db.Column(db.Integer)
	triggerfunction = db.Column(db.String(64))
	metricname = db.Column(db.String(80))
	comparetype = db.Column(db.String(80))

	calculateditem_id = db.Column(db.Integer,db.ForeignKey('calculateditem.calculateditemid'))

	# action_id = db.Column(db.Integer,db.ForeignKey('action.actionid'))
	actions = db.relationship('Action',backref='trigger',lazy='dynamic')

	
	# serviceid = db.Column(db.In)

	def __init__(self,triggerid,triggername,triggervalue,timeshift,calcitem,triggerfunction,metricname,comparetype):
		self.triggerid = triggerid
		self.triggername = triggername
		self.triggervalue = triggervalue
		self.timeshift = timeshift
		self.calcitem = calcitem
		self.triggerfunction = triggerfunction
		self.metricname = metricname
		self.comparetype = comparetype

	def __repr__(self):
		return '<Trigger %r>' % ( self.triggername )
Example #5
0
class Reportimg(db.Model):
    reportimgid = db.Column(db.Integer, primary_key=True)
    reportimgname = db.Column(db.String(80))
    report_id = db.Column(db.Integer, db.ForeignKey('report.reportid'))
    daytime = db.Column(db.String(80))
    emailschedule_id = db.Column(
        db.Integer, db.ForeignKey('emailschedule.emailscheduleid'))

    def __init__(self, reportimgname, daytime, report, es):
        self.reportimgname = reportimgname
        self.daytime = daytime
        self.report = report
        self.es = es

    def __repr__(self):
        return '<Reportimg %r>' % self.reportimgname
Example #6
0
class Emailschedule(db.Model):
    emailscheduleid = db.Column(db.Integer, primary_key=True)
    frequency = db.Column(db.Integer)
    starttime = db.Column(db.String(80))
    subject = db.Column(db.String(80))
    timezone = db.Column(db.Integer)
    user_id = db.Column(db.Integer, db.ForeignKey('user.userid'))
    imgs = db.relationship('Reportimg', backref='es', lazy='dynamic')
    reports = db.relationship(
        'Report',
        secondary=email_report,
        primaryjoin=(email_report.c.email_id == emailscheduleid),
        secondaryjoin=(email_report.c.report_id == Report.reportid),
        lazy='dynamic')

    receivers = db.relationship(
        'Receiver',
        secondary=email_receiver,
        primaryjoin=(email_receiver.c.email_id == emailscheduleid),
        secondaryjoin=(email_receiver.c.receiver_id == Receiver.receiverid),
        lazy='dynamic')

    def __init__(self, subject, frequency, starttime, owner, timezone=0):
        self.subject = subject
        self.frequency = frequency
        self.starttime = starttime
        self.owner = owner
        self.timezone = timezone

    def add_report(self, report):
        if not self.has_report(report):
            self.reports.append(report)
            return self

    def rm_report(self, report):
        if self.has_report(report):
            self.reports.remove(report)
            return self

    def has_report(self, report):
        return self.reports.filter_by(reportid=report.reportid).count() > 0

    def add_receiver(self, receiver):
        if not self.has_receiver(receiver):
            self.receivers.append(receiver)
            return self

    def rm_receiver(self, receiver):
        if self.has_receiver(receiver):
            self.receivers.remove(receiver)
            return self

    def has_receiver(self, receiver):
        return self.receivers.filter_by(
            receiverid=receiver.receiverid).count() > 0

    def __repr__(self):
        return '<Emailschedule %r>' % self.subject
Example #7
0
class Host(db.Model):
	hostid = db.Column(db.Integer,primary_key=True,autoincrement=False,unique=True)
	hostname = db.Column(db.String(80))
	items = db.relationship('Item',backref='host',lazy='dynamic')
	area_id = db.Column(db.Integer,db.ForeignKey('area.areaid'))
	service_id = db.Column(db.Integer,db.ForeignKey('service.serviceid'))

	itemtypes = db.relationship('Itemtype',
				secondary=host_itemtype,
				primaryjoin=(host_itemtype.c.host_id == hostid),
				secondaryjoin=(host_itemtype.c.itemtype_id == Itemtype.itemtypeid),
				backref=db.backref('host',lazy='dynamic'),
				lazy = 'dynamic'
	)
	
	# def __init__(self,servicename):
	# 	self.servicename = servicename
	
	def __repr__(self):
		return '<Service %r>' % self.servicename

	def add_itemtype(self,itemtype):
		if not self.has_itemtype(itemtype):
			self.itemtypes.append(itemtype)
			return self

	def rm_itemtype(self,itemtype):
		if self.has_itemtype(itemtype):
			self.itemtypes.remove(itemtype)
			return self

	def has_itemtype(self,itemtype):
		return self.itemtypes.filter_by(itemkey = itemtype.itemkey).count() > 0
		# return self.itemtypes.filter_by(itemtypeid = itemtype.itemtypeid).count() > 0


	def __init__(self,hostid,hostname,area,service):
		self.hostid = hostid
		self.hostname = hostname
		self.area = area
		self.service = service


	def __repr__(self):
		return '<Host %r>' % self.hostname
Example #8
0
class Itemtype(db.Model):
	itemtypeid = db.Column(db.Integer,primary_key=True)
	itemtypename = db.Column(db.String(80))
	itemkey = db.Column(db.String(80))
	itemunit = db.Column(db.String(80))
	zabbixvaluetype = db.Column(db.Integer)
	items = db.relationship('Item',backref='itemtype',lazy='dynamic')
	aws_id = db.Column(db.Integer,db.ForeignKey('aws.awsid'))
	Itemdatatype_id = db.Column(db.Integer,db.ForeignKey('itemdatatype.itemdatatypeid'))
	normalitemtype_id = db.Column(db.Integer,db.ForeignKey('normalitemtype.normalitemtypeid'))
	zbxitemtype_id = db.Column(db.Integer,db.ForeignKey('zbxitemtype.zbxitemtypeid'))
	time_frequency = db.Column(db.Integer)
	function_type = db.Column(db.Integer)
	description = db.Column(db.String(256))
	bcd_type = db.Column(db.Integer)
	condition = db.Column(db.String(64))
	uniqueindexname = db.Column(db.String(80))
	# detailitemtypes = db.relationship('Detailitemtype',backref='itemtype',lazy='dynamic')

	def	__init__(self, itemtypename, itemkey, uniqueindexname, aws=None, itemdatatype=None, \
		itemunit=None, zabbixvaluetype=None, time_frequency=60, \
		function_type=0, description=None, bcd_type=0, condition=None):
		self.itemtypename = itemtypename
		self.itemkey = itemkey
		self.uniqueindexname = uniqueindexname
		self.aws = aws
		self.itemdatatype = itemdatatype
		self.itemunit = itemunit
		self.zabbixvaluetype = zabbixvaluetype
		if aws != None:
			self.time_frequency = 14400
		else:
			self.time_frequency = 60
		self.function_type = function_type
		if description is None:
			description = itemtypename

		self.description = description
		self.bcd_type = bcd_type
		self.condition = condition

	def __repr__(self):
		return '<Itemtype %r>' % self.itemtypename
Example #9
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    date_posted = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Post('{self.title}', '{self.date_posted}')"
Example #10
0
class Chartconfig(db.Model):
    chartconfigid = db.Column(db.Integer, primary_key=True)
    attrs = db.relationship('Attr', backref='chartconfig', lazy='dynamic')

    window_id = db.Column(db.Integer, db.ForeignKey('window.windowid'))

    def __init__(self, window):
        self.window = window

    def __repr__(self):
        return '<Chartconfig %r>' % self.chartconfigid
Example #11
0
class Page(db.Model):
    pageid = db.Column(db.Integer, primary_key=True)
    pagename = db.Column(db.String(80))
    windows = db.relationship('Window', backref='page', lazy='dynamic')
    user_id = db.Column(db.Integer, db.ForeignKey('user.userid'))

    def __init__(self, pagename, owner):
        self.pagename = pagename
        self.owner = owner

    def __repr__(self):
        return '<Page %r>' % self.pagename
Example #12
0
class Operation(db.Model):
	operationid = db.Column(db.Integer,primary_key=True)
	operationname = db.Column(db.String(80))
	action_id = db.Column(db.Integer,db.ForeignKey('action.actionid'))
	attrs = db.relationship('Attr',backref='operation',lazy='dynamic')

	def __init__(self,operationname,action):
		self.operationname = operationname
		self.action = action

	def __repr__(self):
		return '<Operation %s>' % (self.operationname)
Example #13
0
class Action(db.Model):
	actionid = db.Column(db.Integer,primary_key=True,autoincrement=False)
	actionname = db.Column(db.String(80))
	operations = db.relationship('Operation',backref='action',lazy='dynamic')
	trigger_id = db.Column(db.Integer,db.ForeignKey('trigger.triggerid'))

	def __init__(self,actionid,actionname,trigger):
		self.actionid = actionid
		self.actionname = actionname
		self.trigger = trigger

	def __repr__(self):
		return '<Action %s>' % (self.actionid)
Example #14
0
class Aws(db.Model):
	awsid = db.Column(db.Integer,primary_key=True)
	awsname = db.Column(db.String(80))
	items = db.relationship('Item',backref='aws',lazy='dynamic')
	itemtypes = db.relationship('Itemtype',backref='aws',lazy='dynamic')
	area_id = db.Column(db.Integer,db.ForeignKey('area.areaid'))

	def __init__(self,awsname,area):
		self.awsname = awsname
		self.area = area

	def __repr__(self):
		return '<AWS %r>' % self.awsname
Example #15
0
class Displaytablerow(db.Model):
    displaytablerowid = db.Column(db.Integer, primary_key=True)

    displaytable_id = db.Column(db.Integer,
                                db.ForeignKey('displaytable.displaytableid'))

    attrs = db.relationship('Attr', backref='displaytablerow', lazy='dynamic')

    def __init__(self, displaytable):
        self.displaytable = displaytable

    def __repr__(self):
        return '<Displaytablerow %r>' % self.displaytablerowid
Example #16
0
class count(db.Model):
    """docstring for count"""
    countid = db.Column(db.Integer, primary_key=True)
    value = db.Column(db.Integer, nullable=False)
    clock = db.Column(db.BigInteger, nullable=False)
    region_id = db.Column(db.Integer, db.ForeignKey("region.regionid"))
    counttype_id = db.Column(db.Integer,
                             db.ForeignKey("counttype.counttypeid"))

    def __init__(self, value, clock, region, counttype):
        self.value = value
        self.clock = clock
        self.region = region
        self.counttype = counttype

    @classmethod
    def get_all_month_str(cls):
        result = []
        for c in cls.query.order_by(count.clock).all():
            month_str = clock_2_str(int(c.clock), MONTH_FORMAT)
            if month_str not in result:
                result.append(month_str)
        return result
Example #17
0
class Window(db.Model):
    windowid = db.Column(db.Integer, primary_key=True)
    windowname = db.Column(db.String(80))
    type = db.Column(db.Integer)
    index = db.Column(db.Integer)
    user_id = db.Column(db.Integer, db.ForeignKey('user.userid'))
    page_id = db.Column(db.Integer, db.ForeignKey('page.pageid'))

    selectedmetrics = db.relationship('Selectedmetrics',
                                      backref='window',
                                      lazy='dynamic')
    chartconfig = db.relationship('Chartconfig',
                                  backref='window',
                                  lazy='dynamic')

    def __init__(self, windowname, type, index, user, page):
        self.windowname = windowname
        self.type = type
        self.index = index
        self.owner = user
        self.page = page

    def __repr__(self):
        return '<Window %r>' % self.windowname
Example #18
0
class Displaytable(db.Model):
    displaytableid = db.Column(db.Integer, primary_key=True)
    displaytablename = db.Column(db.String(80))

    option_id = db.Column(db.Integer, db.ForeignKey('option.optionid'))

    rows = db.relationship('Displaytablerow',
                           backref='displaytable',
                           lazy='dynamic')

    def __init__(self, displaytablename, option):
        self.displaytablename = displaytablename
        self.option = option

    def __repr__(self):
        return '<Displaytable %r>' % self.displaytablename
Example #19
0
class Option(db.Model):
    optionid = db.Column(db.Integer, primary_key=True)
    optionname = db.Column(db.String(80))
    selectedmetrics_id = db.Column(
        db.Integer, db.ForeignKey('selectedmetrics.selectedmetricsid'))

    displaytables = db.relationship('Displaytable',
                                    backref='option',
                                    lazy='dynamic')

    def __init__(self, optionname, selectedmetrics):
        self.optionname = optionname
        self.selectedmetrics = selectedmetrics

    def __repr__(self):
        return '<Option %r>' % self.optionname
Example #20
0
class intervaldata(db.Model):
    """docstring for intervaldata"""

    intervaldataid = db.Column(db.Integer, primary_key=True)
    timefrom = db.Column(db.BigInteger, nullable=False)
    timeto = db.Column(db.BigInteger, nullable=False)
    groupname = db.Column(db.String(128), nullable=False)
    itemkey = db.Column(db.String(128), nullable=False)
    displayname = db.Column(db.String(128))
    sumv = db.Column(db.Float)
    odmonth_id = db.Column(db.Integer, db.ForeignKey("odmonth.odmonthid"))

    def __init__(self, timefrom, timeto, groupname, itemkey, displayname,\
         sumv, odmonth):
        self.timefrom = timefrom
        self.timeto = timeto
        self.groupname = groupname
        self.itemkey = itemkey
        self.displayname = displayname
        self.sumv = sumv
        self.odmonth = odmonth
Example #21
0
class billingrow(db.Model):
    """docstring for billingrow"""

    billingrowid = db.Column(db.BigInteger, primary_key=True)
    billingperiodstartdate = db.Column(db.BigInteger)
    billingperiodenddate = db.Column(db.BigInteger)
    invoicedate = db.Column(db.BigInteger)
    sellerofrecord = db.Column(db.String(128))
    usagetype = db.Column(db.String(128))
    rateid = db.Column(db.BigInteger)
    itemdescription = db.Column(db.String(256))
    usagestartdate = db.Column(db.BigInteger)
    usageenddate = db.Column(db.BigInteger)
    usagequantity = db.Column(db.Float)
    blendedrate = db.Column(db.Float)
    currencycode = db.Column(db.String(64))
    costbeforetax = db.Column(db.Float)
    credits = db.Column(db.Float)
    taxamount = db.Column(db.Float)
    taxtype = db.Column(db.String(128))
    totalcost = db.Column(db.Float)

    invoice_id = db.Column(db.BigInteger, db.ForeignKey('invoice.invoiceid'))
    apioperation_id = db.Column(db.BigInteger, \
        db.ForeignKey('apioperation.apioperationid'))
    payeraccount_id = db.Column(db.BigInteger, \
        db.ForeignKey('payeraccount.payeraccountid'))
    linkedaccount_id = db.Column(db.BigInteger, \
        db.ForeignKey('linkedaccount.linkedaccountid'))
    awsservice_id = db.Column(db.BigInteger, \
        db.ForeignKey('awsservice.awsserviceid'))
    availablezone_id = db.Column(db.BigInteger, \
        db.ForeignKey('availablezone.availablezoneid'))
    billingtime_id = db.Column(db.BigInteger, \
        db.ForeignKey('billingtime.billingtimeid'))


    def __init__(self, billingperiodstartdate,\
        billingperiodenddate,\
        invoicedate,\
        sellerofrecord,\
        usagetype,\
        rateid,\
        itemdescription,\
        usagestartdate,\
        usageenddate,\
        usagequantity,\
        blendedrate,\
        currencycode,\
        costbeforetax,\
        credits,\
        taxamount,\
        taxtype,\
        totalcost,\
        tmp_invoice=None,\
        tmp_apioperation=None,\
        tmp_payeraccount=None,\
        tmp_linkedaccount=None,\
        tmp_awsservice=None,
        tmp_availablezone=None,
        tmp_billingtime=None):
        if billingperiodstartdate is None or billingperiodenddate is None or \
            invoicedate is None or itemdescription is None or usagequantity is \
            None or totalcost is None:
            raise Exception('Invalid input in billingrow constructor')
        self.billingperiodstartdate = billingperiodstartdate
        self.billingperiodenddate = billingperiodenddate
        self.invoicedate = invoicedate
        self.sellerofrecord = sellerofrecord
        self.usagetype = usagetype
        self.rateid = rateid
        self.itemdescription = itemdescription
        self.usagestartdate = usagestartdate
        self.usageenddate = usageenddate
        self.usagequantity = usagequantity
        self.blendedrate = blendedrate
        self.currencycode = currencycode
        self.costbeforetax = costbeforetax
        self.credits = credits
        self.taxamount = taxamount
        self.taxtype = taxtype
        self.totalcost = totalcost
        self.invoice = tmp_invoice
        self.apioperation = tmp_apioperation
        self.payeraccount = tmp_payeraccount
        self.linkedaccount = tmp_linkedaccount
        self.awsservice = tmp_awsservice
        self.availablezone = tmp_availablezone
        self.billingtime = tmp_billingtime


    @classmethod
    def get_billstart_month(cls):
        result = []
        for x in cls.query.group_by(billingrow.billingperiodstartdate).all():
            clock = x.billingperiodstartdate
            time_str = clock_2_str(clock, TO_TIME_FORMAT)
            if time_str is not None:
                result.append(time_str)

        return result
Example #22
0
	def __repr__(self):
		return "<Itemdatatype %r>" % self.itemdatatypename


# class Detailitemtype(db.Model):
# 	detailitemtypeid = db.Column(db.Integer,primary_key=True)
# 	detailitemtypename = db.Column(db.String(80),unique=True)
# 	items = db.relationship('Item',backref='Detailitemtype',lazy='dynamic')
# 	itemtype_id = db.Column(db.Integer,db.ForeignKey('itemtype.itemtypeid'))
# 	aws_id = db.Column(db.Integer,db.ForeignKey('aws.awsid'))

# 	def __repr__(self):
# 		return '<Detailitemtype %r>' % self.detailitemtypename

service_itemtype = db.Table('service_itemtype',
				db.Column('service_id',db.Integer,db.ForeignKey('service.serviceid')),
				db.Column('itemtype_id',db.Integer,db.ForeignKey('itemtype.itemtypeid')))

class Service(db.Model):
	serviceid = db.Column(db.Integer,primary_key=True,autoincrement=True)
	servicename = db.Column(db.String(80),unique=True)
	hosts = db.relationship('Host',backref='service',lazy='dynamic')
	items = db.relationship('Item',backref='service',lazy='dynamic')
	itemtypes = db.relationship('Itemtype',
				secondary=service_itemtype,
				primaryjoin=(service_itemtype.c.service_id == serviceid),
				secondaryjoin=(service_itemtype.c.itemtype_id == Itemtype.itemtypeid),
				backref=db.backref('service',lazy='dynamic'),
				lazy = 'dynamic'
	)
	
Example #23
0
class Item(db.Model):
	itemid = db.Column(db.Integer,primary_key=True,autoincrement=False,unique=True)
	itemname = db.Column(db.String(80))
	host_id = db.Column(db.Integer,db.ForeignKey('host.hostid'))
	itemtype_id = db.Column(db.Integer,db.ForeignKey('itemtype.itemtypeid'),nullable=False)
	# detailitemtype_id = db.Column(db.Integer,db.ForeignKey('detailitemtype.detailitemtypeid'))
	area_id = db.Column(db.Integer,db.ForeignKey('area.areaid'))
	service_id = db.Column(db.Integer,db.ForeignKey('service.serviceid'))
	aws_id = db.Column(db.Integer,db.ForeignKey('aws.awsid'))

	def __init__(self,itemid,itemname,host=None,itemtype=None):


		self.itemid = itemid
		self.itemname = itemname
		self.host = host
		self.itemtype = itemtype
		area = None
		service = None
		aws = None
		if host != None:
			area = host.area
			service = host.service

		if itemtype != None:
			aws = itemtype.aws

		self.area = area
		self.service = service
		self.aws = aws

	def set_belong_to_area(self,area):
		if self.area == area:
			return None
		self.area = area
		return self



	def __repr__(self):
		return '<Item %r>' % self.itemname

	def get_host_ip(self):

		assert self.host is not None, 'current item: %s does not ' + \
			'belong to any host' % (self)

		assert self.host.hostid is not None

		ip = 'unkown'
		session = loadSession()
		zi = session.query(Zabbixinterface).\
			filter_by(hostid=self.host.hostid).first()
		session.close()
		if zi != None:
			ip = zi.ip

		return ip

	def get_available_status(self):

		assert self.host is not None, 'current item: %s does not ' + \
			'belong to any host' % (self)

		assert self.host.hostid is not None

		available_status = None

		session = loadSession()
		zh = session.query(Zabbixhosts).get(self.host.hostid)
		session.close()
		
		if zh != None:
			available_status = zh.available

		return available_status
Example #24
0
    pagename = db.Column(db.String(80))
    windows = db.relationship('Window', backref='page', lazy='dynamic')
    user_id = db.Column(db.Integer, db.ForeignKey('user.userid'))

    def __init__(self, pagename, owner):
        self.pagename = pagename
        self.owner = owner

    def __repr__(self):
        return '<Page %r>' % self.pagename


email_report = db.Table(
    'email_report',
    db.Column('email_id', db.Integer,
              db.ForeignKey('emailschedule.emailscheduleid')),
    db.Column('report_id', db.Integer, db.ForeignKey('report.reportid')))


class Receiver(db.Model):
    receiverid = db.Column(db.Integer, primary_key=True)
    mailaddress = db.Column(db.String(80))

    def __init__(self, mailaddress):
        self.mailaddress = mailaddress

    def __repr__(self):
        return '<Receiver %r>' % self.mailaddress


email_receiver = db.Table(