def get_queryset(self, request): """ Annotate direct iface and slivers counter to allow ordering on change list. Intercept search query to allow search nodes by management network IP """ related = ('group', 'island') qs = super(NodeAdmin, self).get_queryset(request).select_related(*related) qs = qs.annotate(models.Count('direct_ifaces', distinct=True)) # FIXME: try to move to slices to avoid coupling nodes with slices app qs = qs.annotate(models.Count('slivers', distinct=True)) # HACK for searching nodes by IP search = request.GET.get('q', False) if search: for query in search.split(' '): try: node = mgmt_reverse(query) except InvalidMgmtAddress: pass else: # Skip django admin filtering request.GET._mutable = True request.GET.pop('q') request.GET._mutable = False qs = qs.filter(id=node.id) break return qs
def queryset(self, request): """ Annotate direct iface and slivers counter to allow ordering on change list. Intercept search query to allow search nodes by management network IP """ related = ('group', 'island') qs = super(NodeAdmin, self).queryset(request).select_related(*related) qs = qs.annotate(models.Count('direct_ifaces', distinct=True)) # FIXME: try to move to slices to avoid coupling nodes with slices app qs = qs.annotate(models.Count('slivers', distinct=True)) # HACK for searching nodes by IP search = request.GET.get('q', False) if search: for query in search.split(' '): try: node = mgmt_reverse(query) except InvalidMgmtAddress: pass else: # Skip django admin filtering request.GET._mutable = True request.GET.pop('q') request.GET._mutable = False qs = qs.filter(id=node.id) break return qs
def process_view(self, request, view_func, view_args, view_kwargs): if view_func.func_name in ("NodeDetail", "SliverDetail"): from controller.core.exceptions import InvalidMgmtAddress from mgmtnetworks.utils import reverse as mgmt_reverse META = request.META remote_addr = META.get("HTTP_X_REAL_IP", META["REMOTE_ADDR"]) try: client = mgmt_reverse(remote_addr) except InvalidMgmtAddress: return from nodes.models import Node if isinstance(client, Node): from .models import State if view_func.func_name == "NodeDetail": State.register_heartbeat(client) elif view_func.func_name == "SliverDetail": from slices.models import Sliver try: sliver = Sliver.objects.get(pk=view_kwargs.get("pk")) except Sliver.DoesNotExist: pass else: State.register_heartbeat(sliver)
def process_view(self, request, view_func, view_args, view_kwargs): if view_func.func_name in ('NodeDetail', 'SliverDetail'): from controller.core.exceptions import InvalidMgmtAddress from mgmtnetworks.utils import reverse as mgmt_reverse META = request.META remote_addr = META.get('HTTP_X_REAL_IP', META['REMOTE_ADDR']) try: client = mgmt_reverse(remote_addr) except InvalidMgmtAddress: return from nodes.models import Node if isinstance(client, Node): from .models import State if view_func.func_name == 'NodeDetail': State.register_heartbeat(client) elif view_func.func_name == 'SliverDetail': from slices.models import Sliver try: sliver = Sliver.objects.get(pk=view_kwargs.get('pk')) except Sliver.DoesNotExist: pass else: State.register_heartbeat(sliver)