Source code for promgen.discovery.default
# Copyright (c) 2017 LINE Corporation
# These sources are released under the terms of the MIT license: see LICENSE
import logging
from django.shortcuts import get_object_or_404
from promgen import discovery, models
logger = logging.getLogger(__name__)
[docs]
class DiscoveryPromgen(discovery.DiscoveryBase):
"""Promgen local database discovery plugin
This is the default discovery plugin for farms and hosts stored locally in
promgen's database. They are queried directly from Django's ORM
"""
remote = False
[docs]
def fetch(self, farm_name):
"""Fetch list of hosts for a farm from the local database"""
farm = get_object_or_404(models.Farm, name=farm_name)
for host in models.Host.objects.filter(farm=farm):
yield host.name
[docs]
def farms(self):
"""Fetch farms from local database"""
for farm in models.Farm.objects.filter(source=discovery.FARM_DEFAULT):
yield farm.name