Skip to content
This repository was archived by the owner on Nov 30, 2025. It is now read-only.

Commit a4e1520

Browse files
committed
Get Dynmap using SPIGET
1 parent c9f93fe commit a4e1520

File tree

5 files changed

+74
-1
lines changed

5 files changed

+74
-1
lines changed

api/v1alpha1/minecraftserver_types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,10 @@ type MonitoringSpec struct {
6464
Enabled bool `json:"enabled"`
6565
}
6666

67+
type DynmapSpec struct {
68+
Enabled bool `json:"enabled"`
69+
}
70+
6771
// MinecraftServerSpec defines the desired state of MinecraftServer
6872
type MinecraftServerSpec struct {
6973
EULA EULAAcceptance `json:"eula"`
@@ -78,6 +82,7 @@ type MinecraftServerSpec struct {
7882
ExternalServiceIP string `json:"externalServiceIP"`
7983
VanillaTweaks *VanillaTweaks `json:"vanillaTweaks,omitempty"`
8084
Monitoring *MonitoringSpec `json:"monitoring,omitempty"`
85+
Dynmap *DynmapSpec `json:"dynmap,omitempty"`
8186
}
8287

8388
// MinecraftServerStatus defines the observed state of MinecraftServer

api/v1alpha1/zz_generated.deepcopy.go

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

config/crd/bases/minecraft.jameslaverack.com_minecraftservers.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ spec:
5353
type: string
5454
type: object
5555
type: array
56+
dynmap:
57+
properties:
58+
enabled:
59+
type: boolean
60+
required:
61+
- enabled
62+
type: object
5663
eula:
5764
enum:
5865
- Accepted

controllers/minecraftserver_controller_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -720,3 +720,33 @@ func TestReconcilerFixesServiceOwnerReference(t *testing.T) {
720720
require.NoError(t, err)
721721
assertOwnerReference(t, &server, &service)
722722
}
723+
724+
func TestDynmapEnabled(t *testing.T) {
725+
ctx := context.Background()
726+
k8sClient, teardownFunc := setupTestingEnvironment(ctx, t)
727+
defer teardownFunc()
728+
729+
server := generateTestServer()
730+
server.Spec.Dynmap = &minecraftv1alpha1.DynmapSpec{
731+
Enabled: true,
732+
}
733+
err := k8sClient.Create(ctx, &server)
734+
require.NoError(t, err)
735+
736+
// TODO Find a better way to know when the reconciler is done
737+
time.Sleep(reconcilerSyncDelay)
738+
739+
var configMap corev1.ConfigMap
740+
err = k8sClient.Get(ctx, client.ObjectKeyFromObject(&server), &configMap)
741+
require.NoError(t, err)
742+
743+
var pod corev1.Pod
744+
err = k8sClient.Get(ctx, client.ObjectKeyFromObject(&server), &pod)
745+
require.NoError(t, err)
746+
assertOwnerReference(t, &server, &pod)
747+
spec := pod.Spec
748+
require.NotNil(t, spec)
749+
container := pod.Spec.Containers[0]
750+
751+
assertEnv(t, container, "SPIGET_RESOURCES", "274")
752+
}

internal/reconcile/pod.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,18 @@ func podForServer(server *v1alpha1.MinecraftServer, configMap *corev1.ConfigMap)
292292
})
293293
}
294294

295-
spigetResources := make([]string, 0)
295+
var spigetResources []string
296+
297+
if server.Spec.Dynmap != nil && server.Spec.Dynmap.Enabled {
298+
// This magic number is the Spigot plugin ID for Dynmap
299+
// https://www.spigotmc.org/resources/dynmap%C2%AE.274/
300+
spigetResources = append(spigetResources, "274")
301+
container.Ports = append(container.Ports,
302+
corev1.ContainerPort{
303+
Name: "http",
304+
ContainerPort: 8123,
305+
})
306+
}
296307

297308
if server.Spec.Monitoring != nil && server.Spec.Monitoring.Enabled {
298309
// This magic number is the Spigot plugin ID for the Prometheus Exporter plugin

0 commit comments

Comments
 (0)