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()),
}
)
评论列表
文章目录