Beispiel #1
0
 def get(self, request):
     return render(
         request, 'promgen/status.html', {
             'discovery_plugins': [entry for entry in plugins.discovery()],
             'notifier_plugins':
             [entry for entry in plugins.notifications()],
         })
Beispiel #2
0
 def get_context_data(self, **kwargs):
     context = super(Profile, self).get_context_data(**kwargs)
     context['discovery_plugins'] = [entry for entry in plugins.discovery()]
     context['notifier_plugins'] = [entry for entry in plugins.notifications()]
     context['notifiers'] = {'notifiers': models.Sender.objects.filter(obj=self.request.user)}
     context['subscriptions'] = models.Sender.objects.filter(
         sender='promgen.notification.user', value=self.request.user.username)
     return context
Beispiel #3
0
    def refresh(self):
        target = set()
        current = set(host.name for host in self.host_set.all())
        for entry in plugins.discovery():
            if self.source == entry.name:
                target.update(entry.load()().fetch(self.name))

        remove = current - target
        add = target - current

        if add:
            Audit.log('Adding {} to {}'.format(add, self), self)
            Host.objects.bulk_create(
                [Host(name=name, farm_id=self.id) for name in add])

        if remove:
            Audit.log('Removing {} from {}'.format(add, self), self)
            Host.objects.filter(farm=self, name__in=remove).delete()

        return add, remove
Beispiel #4
0
 def driver_set(cls):
     '''Return the list of drivers for Farm model'''
     for entry in plugins.discovery():
         yield entry.name, entry.load()()
Beispiel #5
0
 def driver(self):
     '''Return configured driver for Farm model instance'''
     for entry in plugins.discovery():
         if entry.name == self.source:
             return entry.load()()
Beispiel #6
0
 def fetch(cls, source):
     for entry in plugins.discovery():
         if entry.name == source:
             for farm in entry.load()().farms():
                 yield farm
Beispiel #7
0
 def choices(cls):
     for entry in plugins.discovery():
         yield entry.name, entry.load()()
Beispiel #8
0
 def driver(self):
     for entry in plugins.discovery():
         if entry.name == self.source:
             return entry.load()()
Beispiel #9
0
 def get_context_data(self, **kwargs):
     context = super(ProjectDetail, self).get_context_data(**kwargs)
     context['sources'] = [entry.name for entry in plugins.discovery()]
     context['global'] = models.Service.default()
     prefetch_related_objects([context['global']], 'rule_set')
     return context