rbimport.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:promgen 作者: line 项目源码 文件源码
def handle(self, db, **kwargs):
        settings.DATABASES['promgen'] = dj_database_url.parse(db)
        connections = ConnectionHandler(settings.DATABASES)
        with connections['promgen'].cursor() as c:
            services = {}
            c.execute('SELECT * FROM service')
            for row in dictfetchall(c):
                services[row['id']], _ = models.Service.objects.get_or_create(
                    name=row['name']
                )

            projects = {}
            c.execute('SELECT * FROM project')
            for row in dictfetchall(c):
                projects[row['id']], _ = models.Project.objects.get_or_create(
                    name=row['name'],
                    service_id=services[row['service_id']].id
                )
                if row['mail_address']:
                    models.Sender.get_or_create(
                        obj=projects[row['id']],
                        sender='promgen.notification.email',
                        value=row['mail_address'],
                    )
                if row['hipchat_channel']:
                    models.Sender.get_or_create(
                        obj=projects[row['id']],
                        sender='promgen.notification.ikasan',
                        value=row['hipchat_channel'],
                    )
                if row['line_notify_access_token']:
                    models.Sender.get_or_create(
                        obj=projects[row['id']],
                        sender='promgen.notification.linenotify',
                        value=row['line_notify_access_token'],
                        password=True,
                    )

            c.execute('SELECT * FROM rule')
            for row in dictfetchall(c):
                models.Rule.objects.update_or_create(
                    name=row['alert_clause'],
                    service=services[row['service_id']],
                    defaults={
                        'duration': row['for_clause'],
                        'clause': row['if_clause'],
                        'labels': convert_to_json(row['labels_clause'].strip()),
                        'annotations': convert_to_json(row['annotations_clause'].strip()),
                    }
                )
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号