123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- # -*- coding:utf-8 -*-
- # Copyright 2017 Xiaomi, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- __author__ = 'Ulric Qin'
- from .bean import Bean
- from rrd.store import db
- class Host(Bean):
- _tbl = 'host'
- _cols = 'id, hostname, maintain_begin, maintain_end'
- def __init__(self, _id, hostname, maintain_begin, maintain_end):
- self.id = _id
- self.hostname = hostname
- self.maintain_begin = maintain_begin
- self.maintain_end = maintain_end
- @classmethod
- def query(cls, page, limit, query, maintaining, group_id):
- where = 'id in (select host_id from grp_host where grp_id = %s)'
- params = [group_id]
- if maintaining == '1':
- where += ' and maintain_begin > 0 and maintain_end > 0'
- if query:
- where += ' and hostname like %s'
- params.append('%' + query + '%')
- vs = cls.select_vs(where=where, params=params, page=page, limit=limit, order='hostname')
- total = cls.total(where, params)
- return vs, total
- @classmethod
- def maintain(cls, begin, end, host_ids):
- if not host_ids:
- return 'host ids is blank'
- cls.update('maintain_begin = %s, maintain_end = %s where id in (%s)' % (begin, end, host_ids))
- return ''
- @classmethod
- def no_maintain(cls, host_ids):
- if not host_ids:
- return 'host ids is blank'
- cls.update('maintain_begin = 0, maintain_end = 0 where id in (%s)' % host_ids)
- return ''
- @classmethod
- def all_host_dict(cls):
- rows = db.query_all('SELECT id, hostname FROM host')
- ret = {}
- if rows:
- for row in rows:
- ret[row[0]] = row[1]
- return ret
- @classmethod
- def add(cls, host_id, hostname):
- if cls.exists('id=%s', [host_id]):
- return
- cls.insert({'id': host_id, 'hostname': hostname})
- @classmethod
- def create(cls, hostname):
- if cls.exists('hostname=%s', [hostname]):
- return
- cls.insert({'hostname': hostname})
|