Add and test control plane configuration #21

Merged
rixx merged 14 commits from 12-control-planes into main 2025-03-24 10:29:25 +00:00
Showing only changes of commit bf0349c3cf - Show all commits

View file

@ -1,4 +1,4 @@
from django.contrib import admin from django.contrib import admin, messages
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from servala.core.forms import ControlPlaneAdminForm from servala.core.forms import ControlPlaneAdminForm
@ -116,6 +116,7 @@ class ControlPlaneAdmin(admin.ModelAdmin):
list_filter = ("cloud_provider",) list_filter = ("cloud_provider",)
search_fields = ("name", "description", "k8s_api_endpoint") search_fields = ("name", "description", "k8s_api_endpoint")
autocomplete_fields = ("cloud_provider",) autocomplete_fields = ("cloud_provider",)
actions = ["test_kubernetes_connection"]
fieldsets = ( fieldsets = (
( (
@ -137,6 +138,29 @@ class ControlPlaneAdmin(admin.ModelAdmin):
# Exclude the original api_credentials field as we're using our custom fields # Exclude the original api_credentials field as we're using our custom fields
return ["api_credentials"] return ["api_credentials"]
def response_change(self, request, obj):
result = super().response_change(request, obj)
if "_save_and_test" in request.POST:
success, message = obj.test_connection()
if success:
messages.success(request, message)
else:
messages.warning(request, message)
return result
def test_kubernetes_connection(self, request, queryset):
"""Admin action to test Kubernetes connection for selected control planes"""
for control_plane in queryset:
success, message = control_plane.test_connection()
message = f"{control_plane.name}: {message}"
if success:
messages.success(request, message)
else:
messages.warning(request, message)
test_kubernetes_connection.short_description = _("Test Kubernetes connection")
@admin.register(Plan) @admin.register(Plan)
class PlanAdmin(admin.ModelAdmin): class PlanAdmin(admin.ModelAdmin):