123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import datetime
- import logging
- from mongoengine import DateTimeField, DictField, StringField, BooleanField
- from apilib.systypes import IterConstant
- from apps.web.core.db import Searchable
- from apps.web.device.models import DeviceDict, logger, Device
- logger = logging.getLogger(__name__)
- class DeviceUpgradeLog(Searchable):
- class Status(IterConstant):
- INIT = 'init'
- RUNNING = 'running'
- FAILURE = 'failure'
- TIMEOUT = 'timeout'
- UPGRADED = 'upgraded'
- SUCCESS = 'success'
- updateKey = StringField()
- devNo = StringField()
- logicalCode = StringField()
- ownerId = StringField()
- devInfo = DictField()
- beforeSoftVer = StringField()
- beforeCoreVer = StringField()
- beforeDriverCode = StringField()
- afterCoreVer = StringField()
- afterSoftVer = StringField()
- afterDriverCode = StringField()
- status = StringField(default = Status.INIT)
- updatePara = DictField()
- reboot = BooleanField(default = False)
- revertPulse = BooleanField(default = False)
- remark = StringField(default = '')
- dateTimeAdded = DateTimeField(verbose_name = u'添加时间', default = datetime.datetime.now)
- meta = {
- 'collection': 'device_upgrade',
- 'db_alias': 'logdata',
- "indexes": [
- 'logicalCode',
- 'devNo',
- 'ownerId',
- {'fields': ['updateKey', 'devNo'], 'unique': True}
- ],
- }
- @staticmethod
- def make_update_key(right_core_ver, right_soft_ver):
- if 'ASR1802' in right_core_ver:
- return '{}_{}'.format(right_core_ver, right_soft_ver)
- else:
- return '{}'.format(right_soft_ver)
- @classmethod
- def new_log(cls, dev, coreVer, softVer, driverCode, updatePara):
- # type: (DeviceDict, basestring, basestring, basestring, basestring)->DeviceUpgradeLog
- try:
- update_key = cls.make_update_key(coreVer, softVer)
- dev_type = dev.get('devType', {})
- return cls(
- updateKey = update_key,
- devNo = dev.devNo,
- logicalCode = dev.logicalCode,
- ownerId = dev.ownerId,
- devInfo = {
- 'devType': {
- 'code': dev_type.get('code', ''),
- 'name': dev_type.get('name', '')
- },
- 'pulseWidth1': dev['pulseWidth1'],
- 'pulseInterval1': dev['pulseInterval1'],
- 'trapSwtich': dev['trapSwtich'],
- 'coreVer': dev['coreVer'],
- 'boardValid': dev.get('boardValid', Device.boardValid.default)
- },
- beforeSoftVer = dev['softVer'],
- beforeCoreVer = dev['coreVer'],
- beforeDriverCode = dev['driverCode'],
- afterCoreVer = coreVer,
- afterSoftVer = softVer,
- afterDriverCode = driverCode,
- updatePara = updatePara,
- reboot = False).save()
- except Exception, e:
- logger.exception(e)
- def set_stauts(self, status):
- self.status = status
- self.save()
|